﻿2026-06-22T01:08:01.6160013Z ##[group]Run ./traceable-reqs check --json
2026-06-22T01:08:01.6160393Z [36;1m./traceable-reqs check --json[0m
2026-06-22T01:08:01.6173174Z shell: /usr/bin/bash -e {0}
2026-06-22T01:08:01.6173437Z ##[endgroup]
2026-06-22T01:08:01.6807395Z {
2026-06-22T01:08:01.6808019Z   "schemaVersion": 1,
2026-06-22T01:08:01.6808509Z   "summary": {
2026-06-22T01:08:01.6808846Z     "requirementCount": 280,
2026-06-22T01:08:01.6809427Z     "completeCount": 280,
2026-06-22T01:08:01.6809847Z     "incompleteCount": 0,
2026-06-22T01:08:01.6810158Z     "findingCount": 0
2026-06-22T01:08:01.6810434Z   },
2026-06-22T01:08:01.6810681Z   "requirements": [
2026-06-22T01:08:01.6810948Z     {
2026-06-22T01:08:01.6811636Z       "id": "REQ-API-1",
2026-06-22T01:08:01.6812042Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-22T01:08:01.6812481Z       "requiredStages": [
2026-06-22T01:08:01.6812767Z         "impl",
2026-06-22T01:08:01.6813020Z         "unit",
2026-06-22T01:08:01.6813272Z         "int"
2026-06-22T01:08:01.6813740Z       ],
2026-06-22T01:08:01.6813991Z       "stages": {
2026-06-22T01:08:01.6814250Z         "doc": {
2026-06-22T01:08:01.6814628Z           "complete": false,
2026-06-22T01:08:01.6814929Z           "evidence": []
2026-06-22T01:08:01.6815199Z         },
2026-06-22T01:08:01.6815447Z         "impl": {
2026-06-22T01:08:01.6815739Z           "complete": true,
2026-06-22T01:08:01.6816163Z           "evidence": [
2026-06-22T01:08:01.6816411Z             {
2026-06-22T01:08:01.6816677Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6817011Z               "line": 15
2026-06-22T01:08:01.6817268Z             }
2026-06-22T01:08:01.6817503Z           ]
2026-06-22T01:08:01.6817721Z         },
2026-06-22T01:08:01.6817936Z         "int": {
2026-06-22T01:08:01.6818175Z           "complete": true,
2026-06-22T01:08:01.6818437Z           "evidence": [
2026-06-22T01:08:01.6818679Z             {
2026-06-22T01:08:01.6819040Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.6819396Z               "line": 13
2026-06-22T01:08:01.6819644Z             }
2026-06-22T01:08:01.6819868Z           ]
2026-06-22T01:08:01.6820088Z         },
2026-06-22T01:08:01.6820321Z         "unit": {
2026-06-22T01:08:01.6820560Z           "complete": true,
2026-06-22T01:08:01.6820822Z           "evidence": [
2026-06-22T01:08:01.6821066Z             {
2026-06-22T01:08:01.6821314Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6821638Z               "line": 717
2026-06-22T01:08:01.6821888Z             },
2026-06-22T01:08:01.6822116Z             {
2026-06-22T01:08:01.6822426Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6822868Z               "line": 804
2026-06-22T01:08:01.6823226Z             }
2026-06-22T01:08:01.6823537Z           ]
2026-06-22T01:08:01.6823842Z         }
2026-06-22T01:08:01.6824152Z       }
2026-06-22T01:08:01.6824451Z     },
2026-06-22T01:08:01.6824748Z     {
2026-06-22T01:08:01.6825073Z       "id": "REQ-API-2",
2026-06-22T01:08:01.6825651Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-22T01:08:01.6826251Z       "requiredStages": [
2026-06-22T01:08:01.6826608Z         "impl",
2026-06-22T01:08:01.6826923Z         "unit",
2026-06-22T01:08:01.6827228Z         "int"
2026-06-22T01:08:01.6827525Z       ],
2026-06-22T01:08:01.6827824Z       "stages": {
2026-06-22T01:08:01.6828143Z         "doc": {
2026-06-22T01:08:01.6828472Z           "complete": false,
2026-06-22T01:08:01.6828834Z           "evidence": []
2026-06-22T01:08:01.6829249Z         },
2026-06-22T01:08:01.6829553Z         "impl": {
2026-06-22T01:08:01.6829866Z           "complete": true,
2026-06-22T01:08:01.6830257Z           "evidence": [
2026-06-22T01:08:01.6830586Z             {
2026-06-22T01:08:01.6830940Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:08:01.6831377Z               "line": 17
2026-06-22T01:08:01.6831687Z             },
2026-06-22T01:08:01.6831988Z             {
2026-06-22T01:08:01.6832657Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.6833090Z               "line": 20
2026-06-22T01:08:01.6833423Z             },
2026-06-22T01:08:01.6833743Z             {
2026-06-22T01:08:01.6834092Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.6834512Z               "line": 142
2026-06-22T01:08:01.6834841Z             },
2026-06-22T01:08:01.6835144Z             {
2026-06-22T01:08:01.6835501Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6835924Z               "line": 24
2026-06-22T01:08:01.6836258Z             },
2026-06-22T01:08:01.6836563Z             {
2026-06-22T01:08:01.6837074Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6837502Z               "line": 41
2026-06-22T01:08:01.6837831Z             },
2026-06-22T01:08:01.6838131Z             {
2026-06-22T01:08:01.6838484Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6838908Z               "line": 213
2026-06-22T01:08:01.6839334Z             },
2026-06-22T01:08:01.6839639Z             {
2026-06-22T01:08:01.6839987Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6840416Z               "line": 255
2026-06-22T01:08:01.6840745Z             },
2026-06-22T01:08:01.6841040Z             {
2026-06-22T01:08:01.6841389Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6841833Z               "line": 334
2026-06-22T01:08:01.6842191Z             },
2026-06-22T01:08:01.6842497Z             {
2026-06-22T01:08:01.6842858Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6843293Z               "line": 397
2026-06-22T01:08:01.6843664Z             },
2026-06-22T01:08:01.6843984Z             {
2026-06-22T01:08:01.6844347Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6844814Z               "line": 436
2026-06-22T01:08:01.6845176Z             },
2026-06-22T01:08:01.6845514Z             {
2026-06-22T01:08:01.6845897Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.6846356Z               "line": 17
2026-06-22T01:08:01.6846699Z             },
2026-06-22T01:08:01.6846995Z             {
2026-06-22T01:08:01.6847371Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.6847814Z               "line": 30
2026-06-22T01:08:01.6848154Z             },
2026-06-22T01:08:01.6848471Z             {
2026-06-22T01:08:01.6848820Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.6849321Z               "line": 63
2026-06-22T01:08:01.6849664Z             },
2026-06-22T01:08:01.6849974Z             {
2026-06-22T01:08:01.6850346Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.6850793Z               "line": 77
2026-06-22T01:08:01.6851139Z             }
2026-06-22T01:08:01.6851439Z           ]
2026-06-22T01:08:01.6851745Z         },
2026-06-22T01:08:01.6852036Z         "int": {
2026-06-22T01:08:01.6852374Z           "complete": true,
2026-06-22T01:08:01.6852728Z           "evidence": [
2026-06-22T01:08:01.6853071Z             {
2026-06-22T01:08:01.6853447Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.6853891Z               "line": 14
2026-06-22T01:08:01.6854234Z             },
2026-06-22T01:08:01.6854511Z             {
2026-06-22T01:08:01.6854783Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.6855074Z               "line": 187
2026-06-22T01:08:01.6855309Z             }
2026-06-22T01:08:01.6855508Z           ]
2026-06-22T01:08:01.6855707Z         },
2026-06-22T01:08:01.6855910Z         "unit": {
2026-06-22T01:08:01.6856131Z           "complete": true,
2026-06-22T01:08:01.6856377Z           "evidence": [
2026-06-22T01:08:01.6856602Z             {
2026-06-22T01:08:01.6856859Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:08:01.6857145Z               "line": 82
2026-06-22T01:08:01.6857364Z             },
2026-06-22T01:08:01.6857569Z             {
2026-06-22T01:08:01.6857965Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.6858265Z               "line": 279
2026-06-22T01:08:01.6858486Z             },
2026-06-22T01:08:01.6858695Z             {
2026-06-22T01:08:01.6859017Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6859341Z               "line": 709
2026-06-22T01:08:01.6859571Z             },
2026-06-22T01:08:01.6859786Z             {
2026-06-22T01:08:01.6860033Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6860319Z               "line": 720
2026-06-22T01:08:01.6860558Z             },
2026-06-22T01:08:01.6860759Z             {
2026-06-22T01:08:01.6861130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6861443Z               "line": 873
2026-06-22T01:08:01.6861666Z             },
2026-06-22T01:08:01.6861884Z             {
2026-06-22T01:08:01.6862138Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6862429Z               "line": 919
2026-06-22T01:08:01.6862658Z             },
2026-06-22T01:08:01.6862862Z             {
2026-06-22T01:08:01.6863110Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.6863396Z               "line": 143
2026-06-22T01:08:01.6863617Z             },
2026-06-22T01:08:01.6863816Z             {
2026-06-22T01:08:01.6864058Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.6864338Z               "line": 187
2026-06-22T01:08:01.6864556Z             }
2026-06-22T01:08:01.6864756Z           ]
2026-06-22T01:08:01.6864947Z         }
2026-06-22T01:08:01.6865138Z       }
2026-06-22T01:08:01.6865334Z     },
2026-06-22T01:08:01.6865540Z     {
2026-06-22T01:08:01.6865749Z       "id": "REQ-API-3",
2026-06-22T01:08:01.6866059Z       "title": "commune/signoff are file-drops, not commands",
2026-06-22T01:08:01.6866364Z       "requiredStages": [
2026-06-22T01:08:01.6866601Z         "impl",
2026-06-22T01:08:01.6866825Z         "unit",
2026-06-22T01:08:01.6867041Z         "int"
2026-06-22T01:08:01.6867271Z       ],
2026-06-22T01:08:01.6867599Z       "stages": {
2026-06-22T01:08:01.6867924Z         "doc": {
2026-06-22T01:08:01.6868262Z           "complete": false,
2026-06-22T01:08:01.6868639Z           "evidence": []
2026-06-22T01:08:01.6869042Z         },
2026-06-22T01:08:01.6869371Z         "impl": {
2026-06-22T01:08:01.6869712Z           "complete": true,
2026-06-22T01:08:01.6870084Z           "evidence": [
2026-06-22T01:08:01.6910332Z             {
2026-06-22T01:08:01.6910895Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.6911423Z               "line": 27
2026-06-22T01:08:01.6911832Z             },
2026-06-22T01:08:01.6912243Z             {
2026-06-22T01:08:01.6912696Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6913235Z               "line": 566
2026-06-22T01:08:01.6913635Z             }
2026-06-22T01:08:01.6914001Z           ]
2026-06-22T01:08:01.6914361Z         },
2026-06-22T01:08:01.6914723Z         "int": {
2026-06-22T01:08:01.6915140Z           "complete": true,
2026-06-22T01:08:01.6915582Z           "evidence": [
2026-06-22T01:08:01.6916002Z             {
2026-06-22T01:08:01.6916451Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.6916916Z               "line": 261
2026-06-22T01:08:01.6917285Z             }
2026-06-22T01:08:01.6917595Z           ]
2026-06-22T01:08:01.6917896Z         },
2026-06-22T01:08:01.6918215Z         "unit": {
2026-06-22T01:08:01.6918558Z           "complete": true,
2026-06-22T01:08:01.6919017Z           "evidence": [
2026-06-22T01:08:01.6919365Z             {
2026-06-22T01:08:01.6919733Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.6920210Z               "line": 280
2026-06-22T01:08:01.6920564Z             },
2026-06-22T01:08:01.6920888Z             {
2026-06-22T01:08:01.6921278Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.6921740Z               "line": 948
2026-06-22T01:08:01.6922099Z             }
2026-06-22T01:08:01.6922697Z           ]
2026-06-22T01:08:01.6923007Z         }
2026-06-22T01:08:01.6923299Z       }
2026-06-22T01:08:01.6923585Z     },
2026-06-22T01:08:01.6923885Z     {
2026-06-22T01:08:01.6924209Z       "id": "REQ-API-4",
2026-06-22T01:08:01.6927283Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-22T01:08:01.6929778Z       "requiredStages": [
2026-06-22T01:08:01.6930133Z         "doc",
2026-06-22T01:08:01.6930441Z         "impl",
2026-06-22T01:08:01.6930756Z         "unit"
2026-06-22T01:08:01.6931056Z       ],
2026-06-22T01:08:01.6931352Z       "stages": {
2026-06-22T01:08:01.6931666Z         "doc": {
2026-06-22T01:08:01.6931995Z           "complete": true,
2026-06-22T01:08:01.6932359Z           "evidence": [
2026-06-22T01:08:01.6932679Z             {
2026-06-22T01:08:01.6933005Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.6933388Z               "line": 149
2026-06-22T01:08:01.6933731Z             }
2026-06-22T01:08:01.6934012Z           ]
2026-06-22T01:08:01.6934308Z         },
2026-06-22T01:08:01.6934609Z         "impl": {
2026-06-22T01:08:01.6934943Z           "complete": true,
2026-06-22T01:08:01.6935293Z           "evidence": [
2026-06-22T01:08:01.6935610Z             {
2026-06-22T01:08:01.6935979Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6936426Z               "line": 484
2026-06-22T01:08:01.6936750Z             }
2026-06-22T01:08:01.6937036Z           ]
2026-06-22T01:08:01.6937336Z         },
2026-06-22T01:08:01.6937637Z         "int": {
2026-06-22T01:08:01.6937966Z           "complete": false,
2026-06-22T01:08:01.6938339Z           "evidence": []
2026-06-22T01:08:01.6938668Z         },
2026-06-22T01:08:01.6939035Z         "unit": {
2026-06-22T01:08:01.6939369Z           "complete": true,
2026-06-22T01:08:01.6939723Z           "evidence": [
2026-06-22T01:08:01.6940052Z             {
2026-06-22T01:08:01.6940363Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6940655Z               "line": 657
2026-06-22T01:08:01.6940887Z             },
2026-06-22T01:08:01.6941102Z             {
2026-06-22T01:08:01.6941340Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6941745Z               "line": 681
2026-06-22T01:08:01.6941989Z             },
2026-06-22T01:08:01.6942198Z             {
2026-06-22T01:08:01.6942427Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.6942709Z               "line": 705
2026-06-22T01:08:01.6942933Z             }
2026-06-22T01:08:01.6943133Z           ]
2026-06-22T01:08:01.6943329Z         }
2026-06-22T01:08:01.6943532Z       }
2026-06-22T01:08:01.6943709Z     },
2026-06-22T01:08:01.6943904Z     {
2026-06-22T01:08:01.6944109Z       "id": "REQ-ARCH-1",
2026-06-22T01:08:01.6944386Z       "title": "Many small acyclically-layered crates",
2026-06-22T01:08:01.6944682Z       "requiredStages": [
2026-06-22T01:08:01.6944907Z         "impl"
2026-06-22T01:08:01.6945106Z       ],
2026-06-22T01:08:01.6945306Z       "stages": {
2026-06-22T01:08:01.6945518Z         "doc": {
2026-06-22T01:08:01.6945734Z           "complete": false,
2026-06-22T01:08:01.6945980Z           "evidence": []
2026-06-22T01:08:01.6946200Z         },
2026-06-22T01:08:01.6946404Z         "impl": {
2026-06-22T01:08:01.6946628Z           "complete": true,
2026-06-22T01:08:01.6946867Z           "evidence": [
2026-06-22T01:08:01.6947077Z             {
2026-06-22T01:08:01.6947315Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-22T01:08:01.6947591Z               "line": 18
2026-06-22T01:08:01.6947811Z             },
2026-06-22T01:08:01.6948150Z             {
2026-06-22T01:08:01.6948394Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-22T01:08:01.6948668Z               "line": 12
2026-06-22T01:08:01.6948895Z             },
2026-06-22T01:08:01.6949157Z             {
2026-06-22T01:08:01.6949406Z               "path": "crates/spt-store/src/lib.rs",
2026-06-22T01:08:01.6949687Z               "line": 12
2026-06-22T01:08:01.6950063Z             }
2026-06-22T01:08:01.6950263Z           ]
2026-06-22T01:08:01.6950463Z         },
2026-06-22T01:08:01.6950665Z         "int": {
2026-06-22T01:08:01.6950898Z           "complete": false,
2026-06-22T01:08:01.6951149Z           "evidence": []
2026-06-22T01:08:01.6951499Z         },
2026-06-22T01:08:01.6951701Z         "unit": {
2026-06-22T01:08:01.6951934Z           "complete": false,
2026-06-22T01:08:01.6952186Z           "evidence": []
2026-06-22T01:08:01.6952410Z         }
2026-06-22T01:08:01.6952597Z       }
2026-06-22T01:08:01.6952792Z     },
2026-06-22T01:08:01.6952997Z     {
2026-06-22T01:08:01.6953217Z       "id": "REQ-ARCH-2",
2026-06-22T01:08:01.6953542Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-22T01:08:01.6953890Z       "requiredStages": [
2026-06-22T01:08:01.6954116Z         "impl"
2026-06-22T01:08:01.6954321Z       ],
2026-06-22T01:08:01.6954522Z       "stages": {
2026-06-22T01:08:01.6954721Z         "doc": {
2026-06-22T01:08:01.6954951Z           "complete": false,
2026-06-22T01:08:01.6955199Z           "evidence": []
2026-06-22T01:08:01.6955414Z         },
2026-06-22T01:08:01.6955613Z         "impl": {
2026-06-22T01:08:01.6955842Z           "complete": true,
2026-06-22T01:08:01.6956087Z           "evidence": [
2026-06-22T01:08:01.6956437Z             {
2026-06-22T01:08:01.6956799Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-22T01:08:01.6957113Z               "line": 18
2026-06-22T01:08:01.6957342Z             }
2026-06-22T01:08:01.6957560Z           ]
2026-06-22T01:08:01.6957761Z         },
2026-06-22T01:08:01.6957971Z         "int": {
2026-06-22T01:08:01.6958218Z           "complete": false,
2026-06-22T01:08:01.6958466Z           "evidence": []
2026-06-22T01:08:01.6958696Z         },
2026-06-22T01:08:01.6958906Z         "unit": {
2026-06-22T01:08:01.6959194Z           "complete": false,
2026-06-22T01:08:01.6959450Z           "evidence": []
2026-06-22T01:08:01.6959680Z         }
2026-06-22T01:08:01.6959874Z       }
2026-06-22T01:08:01.6960074Z     },
2026-06-22T01:08:01.6960276Z     {
2026-06-22T01:08:01.6960495Z       "id": "REQ-ARCH-3",
2026-06-22T01:08:01.6960872Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-22T01:08:01.6961258Z       "requiredStages": [
2026-06-22T01:08:01.6961497Z         "impl",
2026-06-22T01:08:01.6961704Z         "unit"
2026-06-22T01:08:01.6961918Z       ],
2026-06-22T01:08:01.6962122Z       "stages": {
2026-06-22T01:08:01.6962350Z         "doc": {
2026-06-22T01:08:01.6962585Z           "complete": false,
2026-06-22T01:08:01.6962837Z           "evidence": []
2026-06-22T01:08:01.6963081Z         },
2026-06-22T01:08:01.6963285Z         "impl": {
2026-06-22T01:08:01.6963519Z           "complete": true,
2026-06-22T01:08:01.6963758Z           "evidence": [
2026-06-22T01:08:01.6963972Z             {
2026-06-22T01:08:01.6964244Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:08:01.6964538Z               "line": 34
2026-06-22T01:08:01.6964763Z             },
2026-06-22T01:08:01.6964972Z             {
2026-06-22T01:08:01.6965224Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:08:01.6965520Z               "line": 41
2026-06-22T01:08:01.6965745Z             }
2026-06-22T01:08:01.6965940Z           ]
2026-06-22T01:08:01.6966155Z         },
2026-06-22T01:08:01.6966356Z         "int": {
2026-06-22T01:08:01.6966579Z           "complete": false,
2026-06-22T01:08:01.6966831Z           "evidence": []
2026-06-22T01:08:01.6967063Z         },
2026-06-22T01:08:01.6967267Z         "unit": {
2026-06-22T01:08:01.6967481Z           "complete": true,
2026-06-22T01:08:01.6967892Z           "evidence": [
2026-06-22T01:08:01.6968106Z             {
2026-06-22T01:08:01.6968360Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:08:01.6968654Z               "line": 51
2026-06-22T01:08:01.6968885Z             },
2026-06-22T01:08:01.6969156Z             {
2026-06-22T01:08:01.6969408Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:08:01.6969698Z               "line": 71
2026-06-22T01:08:01.6969925Z             },
2026-06-22T01:08:01.6970149Z             {
2026-06-22T01:08:01.6970410Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T01:08:01.6970710Z               "line": 83
2026-06-22T01:08:01.6971055Z             }
2026-06-22T01:08:01.6971260Z           ]
2026-06-22T01:08:01.6971456Z         }
2026-06-22T01:08:01.6971651Z       }
2026-06-22T01:08:01.6971846Z     },
2026-06-22T01:08:01.6972038Z     {
2026-06-22T01:08:01.6972260Z       "id": "REQ-ARCH-4",
2026-06-22T01:08:01.6972600Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-22T01:08:01.6972963Z       "requiredStages": [
2026-06-22T01:08:01.6973211Z         "impl",
2026-06-22T01:08:01.6973426Z         "unit"
2026-06-22T01:08:01.6973636Z       ],
2026-06-22T01:08:01.6973845Z       "stages": {
2026-06-22T01:08:01.6974055Z         "doc": {
2026-06-22T01:08:01.6974290Z           "complete": false,
2026-06-22T01:08:01.6974532Z           "evidence": []
2026-06-22T01:08:01.6974775Z         },
2026-06-22T01:08:01.6974981Z         "impl": {
2026-06-22T01:08:01.6975208Z           "complete": true,
2026-06-22T01:08:01.6975470Z           "evidence": [
2026-06-22T01:08:01.6975690Z             {
2026-06-22T01:08:01.6975943Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6976234Z               "line": 165
2026-06-22T01:08:01.6976457Z             },
2026-06-22T01:08:01.6976676Z             {
2026-06-22T01:08:01.6976930Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6977212Z               "line": 188
2026-06-22T01:08:01.6977429Z             },
2026-06-22T01:08:01.6977642Z             {
2026-06-22T01:08:01.6977890Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6978166Z               "line": 208
2026-06-22T01:08:01.6978404Z             },
2026-06-22T01:08:01.6978614Z             {
2026-06-22T01:08:01.6978858Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6979196Z               "line": 223
2026-06-22T01:08:01.6979426Z             },
2026-06-22T01:08:01.6979639Z             {
2026-06-22T01:08:01.6979896Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6980187Z               "line": 273
2026-06-22T01:08:01.6980406Z             }
2026-06-22T01:08:01.6980608Z           ]
2026-06-22T01:08:01.6980824Z         },
2026-06-22T01:08:01.6981029Z         "int": {
2026-06-22T01:08:01.6981257Z           "complete": false,
2026-06-22T01:08:01.6981500Z           "evidence": []
2026-06-22T01:08:01.6981729Z         },
2026-06-22T01:08:01.6981929Z         "unit": {
2026-06-22T01:08:01.6982153Z           "complete": true,
2026-06-22T01:08:01.6982406Z           "evidence": [
2026-06-22T01:08:01.6982641Z             {
2026-06-22T01:08:01.6982891Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6983175Z               "line": 334
2026-06-22T01:08:01.6983400Z             },
2026-06-22T01:08:01.6983610Z             {
2026-06-22T01:08:01.6983847Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6984138Z               "line": 344
2026-06-22T01:08:01.6984367Z             },
2026-06-22T01:08:01.6984564Z             {
2026-06-22T01:08:01.6984821Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6985101Z               "line": 355
2026-06-22T01:08:01.6985325Z             },
2026-06-22T01:08:01.6985532Z             {
2026-06-22T01:08:01.6985778Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6986058Z               "line": 366
2026-06-22T01:08:01.6986397Z             },
2026-06-22T01:08:01.6986608Z             {
2026-06-22T01:08:01.6986861Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6987142Z               "line": 378
2026-06-22T01:08:01.6987371Z             },
2026-06-22T01:08:01.6987575Z             {
2026-06-22T01:08:01.6987819Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6988108Z               "line": 391
2026-06-22T01:08:01.6988334Z             },
2026-06-22T01:08:01.6988540Z             {
2026-06-22T01:08:01.6988774Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6989370Z               "line": 402
2026-06-22T01:08:01.6989719Z             },
2026-06-22T01:08:01.6989918Z             {
2026-06-22T01:08:01.6990152Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6990437Z               "line": 419
2026-06-22T01:08:01.6990663Z             },
2026-06-22T01:08:01.6990861Z             {
2026-06-22T01:08:01.6991102Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.6991398Z               "line": 547
2026-06-22T01:08:01.6991623Z             }
2026-06-22T01:08:01.6991822Z           ]
2026-06-22T01:08:01.6992023Z         }
2026-06-22T01:08:01.7009541Z       }
2026-06-22T01:08:01.7009770Z     },
2026-06-22T01:08:01.7009970Z     {
2026-06-22T01:08:01.7010185Z       "id": "REQ-CLI-1",
2026-06-22T01:08:01.7011539Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-22T01:08:01.7012757Z       "requiredStages": [
2026-06-22T01:08:01.7012995Z         "impl",
2026-06-22T01:08:01.7013209Z         "unit"
2026-06-22T01:08:01.7013410Z       ],
2026-06-22T01:08:01.7013610Z       "stages": {
2026-06-22T01:08:01.7013819Z         "doc": {
2026-06-22T01:08:01.7014045Z           "complete": false,
2026-06-22T01:08:01.7014293Z           "evidence": []
2026-06-22T01:08:01.7014515Z         },
2026-06-22T01:08:01.7014714Z         "impl": {
2026-06-22T01:08:01.7014937Z           "complete": true,
2026-06-22T01:08:01.7015175Z           "evidence": [
2026-06-22T01:08:01.7015396Z             {
2026-06-22T01:08:01.7015634Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7015905Z               "line": 225
2026-06-22T01:08:01.7016124Z             },
2026-06-22T01:08:01.7016324Z             {
2026-06-22T01:08:01.7016564Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7016836Z               "line": 1093
2026-06-22T01:08:01.7017068Z             },
2026-06-22T01:08:01.7017265Z             {
2026-06-22T01:08:01.7017506Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7017792Z               "line": 1720
2026-06-22T01:08:01.7018020Z             },
2026-06-22T01:08:01.7018221Z             {
2026-06-22T01:08:01.7018460Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7018736Z               "line": 3124
2026-06-22T01:08:01.7019022Z             }
2026-06-22T01:08:01.7019227Z           ]
2026-06-22T01:08:01.7019429Z         },
2026-06-22T01:08:01.7019627Z         "int": {
2026-06-22T01:08:01.7019845Z           "complete": false,
2026-06-22T01:08:01.7020087Z           "evidence": []
2026-06-22T01:08:01.7020305Z         },
2026-06-22T01:08:01.7020512Z         "unit": {
2026-06-22T01:08:01.7020736Z           "complete": true,
2026-06-22T01:08:01.7020979Z           "evidence": [
2026-06-22T01:08:01.7021198Z             {
2026-06-22T01:08:01.7021427Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7021704Z               "line": 7947
2026-06-22T01:08:01.7021928Z             }
2026-06-22T01:08:01.7022132Z           ]
2026-06-22T01:08:01.7022325Z         }
2026-06-22T01:08:01.7022503Z       }
2026-06-22T01:08:01.7022858Z     },
2026-06-22T01:08:01.7023055Z     {
2026-06-22T01:08:01.7023298Z       "id": "REQ-CLI-2",
2026-06-22T01:08:01.7024204Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-22T01:08:01.7025080Z       "requiredStages": [
2026-06-22T01:08:01.7025340Z         "impl",
2026-06-22T01:08:01.7025574Z         "unit"
2026-06-22T01:08:01.7025773Z       ],
2026-06-22T01:08:01.7025970Z       "stages": {
2026-06-22T01:08:01.7026275Z         "doc": {
2026-06-22T01:08:01.7026494Z           "complete": false,
2026-06-22T01:08:01.7026732Z           "evidence": []
2026-06-22T01:08:01.7026952Z         },
2026-06-22T01:08:01.7027143Z         "impl": {
2026-06-22T01:08:01.7027357Z           "complete": true,
2026-06-22T01:08:01.7027585Z           "evidence": [
2026-06-22T01:08:01.7027811Z             {
2026-06-22T01:08:01.7028066Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7028352Z               "line": 414
2026-06-22T01:08:01.7028576Z             },
2026-06-22T01:08:01.7028777Z             {
2026-06-22T01:08:01.7029111Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:08:01.7029397Z               "line": 97
2026-06-22T01:08:01.7029621Z             },
2026-06-22T01:08:01.7029825Z             {
2026-06-22T01:08:01.7030065Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.7030354Z               "line": 256
2026-06-22T01:08:01.7030575Z             },
2026-06-22T01:08:01.7030785Z             {
2026-06-22T01:08:01.7031020Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7031306Z               "line": 434
2026-06-22T01:08:01.7031524Z             },
2026-06-22T01:08:01.7031734Z             {
2026-06-22T01:08:01.7031992Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7032279Z               "line": 1174
2026-06-22T01:08:01.7032508Z             },
2026-06-22T01:08:01.7032712Z             {
2026-06-22T01:08:01.7032936Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7033231Z               "line": 1958
2026-06-22T01:08:01.7033442Z             },
2026-06-22T01:08:01.7033643Z             {
2026-06-22T01:08:01.7033877Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7034154Z               "line": 2047
2026-06-22T01:08:01.7034377Z             },
2026-06-22T01:08:01.7034578Z             {
2026-06-22T01:08:01.7034812Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7035084Z               "line": 2108
2026-06-22T01:08:01.7035307Z             }
2026-06-22T01:08:01.7035494Z           ]
2026-06-22T01:08:01.7035697Z         },
2026-06-22T01:08:01.7035895Z         "int": {
2026-06-22T01:08:01.7036125Z           "complete": false,
2026-06-22T01:08:01.7036367Z           "evidence": []
2026-06-22T01:08:01.7036591Z         },
2026-06-22T01:08:01.7036802Z         "unit": {
2026-06-22T01:08:01.7037017Z           "complete": true,
2026-06-22T01:08:01.7037253Z           "evidence": [
2026-06-22T01:08:01.7037473Z             {
2026-06-22T01:08:01.7037722Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.7038018Z               "line": 338
2026-06-22T01:08:01.7038242Z             },
2026-06-22T01:08:01.7038445Z             {
2026-06-22T01:08:01.7038689Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7039027Z               "line": 8102
2026-06-22T01:08:01.7039261Z             }
2026-06-22T01:08:01.7039460Z           ]
2026-06-22T01:08:01.7039666Z         }
2026-06-22T01:08:01.7039876Z       }
2026-06-22T01:08:01.7040067Z     },
2026-06-22T01:08:01.7040258Z     {
2026-06-22T01:08:01.7040467Z       "id": "REQ-CLI-3",
2026-06-22T01:08:01.7041374Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-22T01:08:01.7042370Z       "requiredStages": [
2026-06-22T01:08:01.7042610Z         "impl",
2026-06-22T01:08:01.7042830Z         "unit"
2026-06-22T01:08:01.7043043Z       ],
2026-06-22T01:08:01.7043247Z       "stages": {
2026-06-22T01:08:01.7043455Z         "doc": {
2026-06-22T01:08:01.7043675Z           "complete": false,
2026-06-22T01:08:01.7043922Z           "evidence": []
2026-06-22T01:08:01.7044151Z         },
2026-06-22T01:08:01.7044351Z         "impl": {
2026-06-22T01:08:01.7044579Z           "complete": true,
2026-06-22T01:08:01.7044918Z           "evidence": [
2026-06-22T01:08:01.7045147Z             {
2026-06-22T01:08:01.7045382Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7045654Z               "line": 1087
2026-06-22T01:08:01.7045882Z             }
2026-06-22T01:08:01.7046087Z           ]
2026-06-22T01:08:01.7046290Z         },
2026-06-22T01:08:01.7046484Z         "int": {
2026-06-22T01:08:01.7046704Z           "complete": false,
2026-06-22T01:08:01.7046962Z           "evidence": []
2026-06-22T01:08:01.7047189Z         },
2026-06-22T01:08:01.7047385Z         "unit": {
2026-06-22T01:08:01.7047601Z           "complete": true,
2026-06-22T01:08:01.7047838Z           "evidence": [
2026-06-22T01:08:01.7048057Z             {
2026-06-22T01:08:01.7048301Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7048573Z               "line": 7912
2026-06-22T01:08:01.7048817Z             }
2026-06-22T01:08:01.7049081Z           ]
2026-06-22T01:08:01.7049278Z         }
2026-06-22T01:08:01.7049467Z       }
2026-06-22T01:08:01.7049663Z     },
2026-06-22T01:08:01.7049850Z     {
2026-06-22T01:08:01.7050058Z       "id": "REQ-CLI-4",
2026-06-22T01:08:01.7052446Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-22T01:08:01.7054398Z       "requiredStages": [],
2026-06-22T01:08:01.7054639Z       "stages": {
2026-06-22T01:08:01.7054858Z         "doc": {
2026-06-22T01:08:01.7055107Z           "complete": false,
2026-06-22T01:08:01.7055359Z           "evidence": []
2026-06-22T01:08:01.7055584Z         },
2026-06-22T01:08:01.7055807Z         "impl": {
2026-06-22T01:08:01.7056027Z           "complete": true,
2026-06-22T01:08:01.7056267Z           "evidence": [
2026-06-22T01:08:01.7056500Z             {
2026-06-22T01:08:01.7056746Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7057034Z               "line": 5678
2026-06-22T01:08:01.7057250Z             }
2026-06-22T01:08:01.7057454Z           ]
2026-06-22T01:08:01.7057650Z         },
2026-06-22T01:08:01.7057856Z         "int": {
2026-06-22T01:08:01.7058088Z           "complete": false,
2026-06-22T01:08:01.7058340Z           "evidence": []
2026-06-22T01:08:01.7058560Z         },
2026-06-22T01:08:01.7058766Z         "unit": {
2026-06-22T01:08:01.7059067Z           "complete": false,
2026-06-22T01:08:01.7059309Z           "evidence": []
2026-06-22T01:08:01.7059533Z         }
2026-06-22T01:08:01.7059732Z       }
2026-06-22T01:08:01.7059918Z     },
2026-06-22T01:08:01.7060114Z     {
2026-06-22T01:08:01.7060343Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-22T01:08:01.7063534Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-22T01:08:01.7066610Z       "requiredStages": [
2026-06-22T01:08:01.7066860Z         "impl",
2026-06-22T01:08:01.7067122Z         "unit"
2026-06-22T01:08:01.7067353Z       ],
2026-06-22T01:08:01.7067552Z       "stages": {
2026-06-22T01:08:01.7067771Z         "doc": {
2026-06-22T01:08:01.7067999Z           "complete": false,
2026-06-22T01:08:01.7068247Z           "evidence": []
2026-06-22T01:08:01.7068472Z         },
2026-06-22T01:08:01.7068682Z         "impl": {
2026-06-22T01:08:01.7068910Z           "complete": true,
2026-06-22T01:08:01.7069235Z           "evidence": [
2026-06-22T01:08:01.7069459Z             {
2026-06-22T01:08:01.7069704Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7069980Z               "line": 8
2026-06-22T01:08:01.7070197Z             },
2026-06-22T01:08:01.7070417Z             {
2026-06-22T01:08:01.7070656Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7070952Z               "line": 51
2026-06-22T01:08:01.7071179Z             },
2026-06-22T01:08:01.7071375Z             {
2026-06-22T01:08:01.7071619Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7071905Z               "line": 82
2026-06-22T01:08:01.7072123Z             },
2026-06-22T01:08:01.7072333Z             {
2026-06-22T01:08:01.7072571Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7072859Z               "line": 229
2026-06-22T01:08:01.7073083Z             }
2026-06-22T01:08:01.7073289Z           ]
2026-06-22T01:08:01.7073484Z         },
2026-06-22T01:08:01.7073689Z         "int": {
2026-06-22T01:08:01.7073913Z           "complete": false,
2026-06-22T01:08:01.7074157Z           "evidence": []
2026-06-22T01:08:01.7074375Z         },
2026-06-22T01:08:01.7074576Z         "unit": {
2026-06-22T01:08:01.7074810Z           "complete": true,
2026-06-22T01:08:01.7075058Z           "evidence": [
2026-06-22T01:08:01.7075281Z             {
2026-06-22T01:08:01.7075522Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7075804Z               "line": 249
2026-06-22T01:08:01.7076017Z             },
2026-06-22T01:08:01.7076227Z             {
2026-06-22T01:08:01.7076461Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7076738Z               "line": 256
2026-06-22T01:08:01.7076966Z             },
2026-06-22T01:08:01.7077166Z             {
2026-06-22T01:08:01.7077401Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7077687Z               "line": 263
2026-06-22T01:08:01.7077914Z             },
2026-06-22T01:08:01.7078127Z             {
2026-06-22T01:08:01.7078365Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7078642Z               "line": 270
2026-06-22T01:08:01.7078875Z             },
2026-06-22T01:08:01.7079175Z             {
2026-06-22T01:08:01.7079409Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7079695Z               "line": 297
2026-06-22T01:08:01.7079925Z             },
2026-06-22T01:08:01.7080134Z             {
2026-06-22T01:08:01.7080366Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7080658Z               "line": 307
2026-06-22T01:08:01.7081001Z             },
2026-06-22T01:08:01.7081221Z             {
2026-06-22T01:08:01.7081458Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7081739Z               "line": 317
2026-06-22T01:08:01.7081973Z             },
2026-06-22T01:08:01.7082184Z             {
2026-06-22T01:08:01.7082422Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7082708Z               "line": 331
2026-06-22T01:08:01.7082941Z             },
2026-06-22T01:08:01.7083150Z             {
2026-06-22T01:08:01.7083391Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7083671Z               "line": 340
2026-06-22T01:08:01.7084000Z             },
2026-06-22T01:08:01.7084215Z             {
2026-06-22T01:08:01.7084459Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7084732Z               "line": 348
2026-06-22T01:08:01.7084949Z             }
2026-06-22T01:08:01.7085155Z           ]
2026-06-22T01:08:01.7085347Z         }
2026-06-22T01:08:01.7085556Z       }
2026-06-22T01:08:01.7085751Z     },
2026-06-22T01:08:01.7085950Z     {
2026-06-22T01:08:01.7086181Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-22T01:08:01.7094551Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-22T01:08:01.7098601Z       "requiredStages": [
2026-06-22T01:08:01.7098850Z         "impl",
2026-06-22T01:08:01.7099139Z         "unit"
2026-06-22T01:08:01.7099351Z       ],
2026-06-22T01:08:01.7099552Z       "stages": {
2026-06-22T01:08:01.7099762Z         "doc": {
2026-06-22T01:08:01.7099990Z           "complete": false,
2026-06-22T01:08:01.7100267Z           "evidence": []
2026-06-22T01:08:01.7100486Z         },
2026-06-22T01:08:01.7100692Z         "impl": {
2026-06-22T01:08:01.7100929Z           "complete": true,
2026-06-22T01:08:01.7101168Z           "evidence": [
2026-06-22T01:08:01.7101389Z             {
2026-06-22T01:08:01.7101651Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7101954Z               "line": 141
2026-06-22T01:08:01.7102201Z             },
2026-06-22T01:08:01.7102402Z             {
2026-06-22T01:08:01.7102646Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7102932Z               "line": 1376
2026-06-22T01:08:01.7103164Z             },
2026-06-22T01:08:01.7103393Z             {
2026-06-22T01:08:01.7103633Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7103905Z               "line": 2145
2026-06-22T01:08:01.7104137Z             },
2026-06-22T01:08:01.7104354Z             {
2026-06-22T01:08:01.7104583Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7105026Z               "line": 4368
2026-06-22T01:08:01.7105255Z             },
2026-06-22T01:08:01.7105455Z             {
2026-06-22T01:08:01.7105679Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7105946Z               "line": 4466
2026-06-22T01:08:01.7106181Z             },
2026-06-22T01:08:01.7106385Z             {
2026-06-22T01:08:01.7106618Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7106895Z               "line": 5257
2026-06-22T01:08:01.7107123Z             },
2026-06-22T01:08:01.7107326Z             {
2026-06-22T01:08:01.7107569Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7107983Z               "line": 39
2026-06-22T01:08:01.7108199Z             }
2026-06-22T01:08:01.7108395Z           ]
2026-06-22T01:08:01.7108599Z         },
2026-06-22T01:08:01.7108785Z         "int": {
2026-06-22T01:08:01.7109091Z           "complete": false,
2026-06-22T01:08:01.7109344Z           "evidence": []
2026-06-22T01:08:01.7109561Z         },
2026-06-22T01:08:01.7109755Z         "unit": {
2026-06-22T01:08:01.7109973Z           "complete": true,
2026-06-22T01:08:01.7110211Z           "evidence": [
2026-06-22T01:08:01.7110432Z             {
2026-06-22T01:08:01.7110670Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7110938Z               "line": 10272
2026-06-22T01:08:01.7111165Z             },
2026-06-22T01:08:01.7111371Z             {
2026-06-22T01:08:01.7111601Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7111887Z               "line": 281
2026-06-22T01:08:01.7118486Z             },
2026-06-22T01:08:01.7118730Z             {
2026-06-22T01:08:01.7119088Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7119402Z               "line": 358
2026-06-22T01:08:01.7119632Z             },
2026-06-22T01:08:01.7119832Z             {
2026-06-22T01:08:01.7120074Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7120357Z               "line": 381
2026-06-22T01:08:01.7120587Z             },
2026-06-22T01:08:01.7120790Z             {
2026-06-22T01:08:01.7121029Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T01:08:01.7121311Z               "line": 395
2026-06-22T01:08:01.7121536Z             }
2026-06-22T01:08:01.7121735Z           ]
2026-06-22T01:08:01.7121926Z         }
2026-06-22T01:08:01.7122117Z       }
2026-06-22T01:08:01.7122307Z     },
2026-06-22T01:08:01.7122500Z     {
2026-06-22T01:08:01.7122713Z       "id": "REQ-CONSENT-1",
2026-06-22T01:08:01.7123814Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-22T01:08:01.7124852Z       "requiredStages": [
2026-06-22T01:08:01.7125087Z         "impl",
2026-06-22T01:08:01.7125290Z         "unit"
2026-06-22T01:08:01.7125508Z       ],
2026-06-22T01:08:01.7125708Z       "stages": {
2026-06-22T01:08:01.7125922Z         "doc": {
2026-06-22T01:08:01.7126156Z           "complete": false,
2026-06-22T01:08:01.7126400Z           "evidence": []
2026-06-22T01:08:01.7126629Z         },
2026-06-22T01:08:01.7126833Z         "impl": {
2026-06-22T01:08:01.7127057Z           "complete": true,
2026-06-22T01:08:01.7127296Z           "evidence": [
2026-06-22T01:08:01.7127510Z             {
2026-06-22T01:08:01.7127763Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7128048Z               "line": 27
2026-06-22T01:08:01.7128267Z             },
2026-06-22T01:08:01.7128474Z             {
2026-06-22T01:08:01.7128713Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7129051Z               "line": 75
2026-06-22T01:08:01.7129281Z             },
2026-06-22T01:08:01.7129496Z             {
2026-06-22T01:08:01.7129738Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7130178Z               "line": 98
2026-06-22T01:08:01.7130401Z             },
2026-06-22T01:08:01.7130610Z             {
2026-06-22T01:08:01.7130853Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7131123Z               "line": 82
2026-06-22T01:08:01.7131337Z             },
2026-06-22T01:08:01.7131548Z             {
2026-06-22T01:08:01.7131786Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7132063Z               "line": 109
2026-06-22T01:08:01.7132286Z             },
2026-06-22T01:08:01.7132486Z             {
2026-06-22T01:08:01.7132726Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7133111Z               "line": 127
2026-06-22T01:08:01.7133331Z             },
2026-06-22T01:08:01.7133525Z             {
2026-06-22T01:08:01.7133764Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7134040Z               "line": 142
2026-06-22T01:08:01.7134259Z             },
2026-06-22T01:08:01.7134459Z             {
2026-06-22T01:08:01.7134688Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7134966Z               "line": 7048
2026-06-22T01:08:01.7135188Z             }
2026-06-22T01:08:01.7135393Z           ]
2026-06-22T01:08:01.7135586Z         },
2026-06-22T01:08:01.7135784Z         "int": {
2026-06-22T01:08:01.7136011Z           "complete": false,
2026-06-22T01:08:01.7136263Z           "evidence": []
2026-06-22T01:08:01.7136482Z         },
2026-06-22T01:08:01.7136687Z         "unit": {
2026-06-22T01:08:01.7136903Z           "complete": true,
2026-06-22T01:08:01.7137145Z           "evidence": [
2026-06-22T01:08:01.7137365Z             {
2026-06-22T01:08:01.7137622Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7137904Z               "line": 334
2026-06-22T01:08:01.7138129Z             },
2026-06-22T01:08:01.7138338Z             {
2026-06-22T01:08:01.7138580Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7138865Z               "line": 380
2026-06-22T01:08:01.7139169Z             },
2026-06-22T01:08:01.7139378Z             {
2026-06-22T01:08:01.7139630Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7139912Z               "line": 391
2026-06-22T01:08:01.7140142Z             },
2026-06-22T01:08:01.7140341Z             {
2026-06-22T01:08:01.7140580Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7140865Z               "line": 165
2026-06-22T01:08:01.7141086Z             },
2026-06-22T01:08:01.7141284Z             {
2026-06-22T01:08:01.7141525Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7141807Z               "line": 184
2026-06-22T01:08:01.7142032Z             },
2026-06-22T01:08:01.7142236Z             {
2026-06-22T01:08:01.7142483Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T01:08:01.7142765Z               "line": 204
2026-06-22T01:08:01.7142981Z             },
2026-06-22T01:08:01.7143185Z             {
2026-06-22T01:08:01.7143413Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7143685Z               "line": 8334
2026-06-22T01:08:01.7143906Z             }
2026-06-22T01:08:01.7144109Z           ]
2026-06-22T01:08:01.7144300Z         }
2026-06-22T01:08:01.7144494Z       }
2026-06-22T01:08:01.7144681Z     },
2026-06-22T01:08:01.7144873Z     {
2026-06-22T01:08:01.7145086Z       "id": "REQ-CONSENT-2",
2026-06-22T01:08:01.7146107Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-22T01:08:01.7147090Z       "requiredStages": [
2026-06-22T01:08:01.7147328Z         "impl",
2026-06-22T01:08:01.7147544Z         "unit"
2026-06-22T01:08:01.7147749Z       ],
2026-06-22T01:08:01.7147943Z       "stages": {
2026-06-22T01:08:01.7148258Z         "doc": {
2026-06-22T01:08:01.7148487Z           "complete": false,
2026-06-22T01:08:01.7148736Z           "evidence": []
2026-06-22T01:08:01.7149108Z         },
2026-06-22T01:08:01.7149311Z         "impl": {
2026-06-22T01:08:01.7149528Z           "complete": true,
2026-06-22T01:08:01.7149810Z           "evidence": [
2026-06-22T01:08:01.7150025Z             {
2026-06-22T01:08:01.7150282Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7150563Z               "line": 140
2026-06-22T01:08:01.7150787Z             },
2026-06-22T01:08:01.7150983Z             {
2026-06-22T01:08:01.7151241Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7151646Z               "line": 165
2026-06-22T01:08:01.7151868Z             },
2026-06-22T01:08:01.7152076Z             {
2026-06-22T01:08:01.7152325Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7152611Z               "line": 199
2026-06-22T01:08:01.7152829Z             },
2026-06-22T01:08:01.7153039Z             {
2026-06-22T01:08:01.7153283Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7153574Z               "line": 241
2026-06-22T01:08:01.7153788Z             },
2026-06-22T01:08:01.7153993Z             {
2026-06-22T01:08:01.7154246Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7154523Z               "line": 269
2026-06-22T01:08:01.7154745Z             },
2026-06-22T01:08:01.7154945Z             {
2026-06-22T01:08:01.7155189Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7155461Z               "line": 300
2026-06-22T01:08:01.7155689Z             },
2026-06-22T01:08:01.7155885Z             {
2026-06-22T01:08:01.7156119Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7156396Z               "line": 6839
2026-06-22T01:08:01.7156619Z             },
2026-06-22T01:08:01.7156824Z             {
2026-06-22T01:08:01.7157062Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7157345Z               "line": 6897
2026-06-22T01:08:01.7157569Z             }
2026-06-22T01:08:01.7157765Z           ]
2026-06-22T01:08:01.7157961Z         },
2026-06-22T01:08:01.7158165Z         "int": {
2026-06-22T01:08:01.7158394Z           "complete": false,
2026-06-22T01:08:01.7158634Z           "evidence": []
2026-06-22T01:08:01.7158857Z         },
2026-06-22T01:08:01.7159143Z         "unit": {
2026-06-22T01:08:01.7159371Z           "complete": true,
2026-06-22T01:08:01.7159607Z           "evidence": [
2026-06-22T01:08:01.7159823Z             {
2026-06-22T01:08:01.7160069Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7160365Z               "line": 419
2026-06-22T01:08:01.7160599Z             },
2026-06-22T01:08:01.7160798Z             {
2026-06-22T01:08:01.7161051Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7161333Z               "line": 436
2026-06-22T01:08:01.7161557Z             },
2026-06-22T01:08:01.7161757Z             {
2026-06-22T01:08:01.7161995Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7162277Z               "line": 472
2026-06-22T01:08:01.7162500Z             },
2026-06-22T01:08:01.7162702Z             {
2026-06-22T01:08:01.7162941Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.7163228Z               "line": 516
2026-06-22T01:08:01.7163452Z             },
2026-06-22T01:08:01.7163656Z             {
2026-06-22T01:08:01.7163885Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7164162Z               "line": 9614
2026-06-22T01:08:01.7164378Z             },
2026-06-22T01:08:01.7164586Z             {
2026-06-22T01:08:01.7164815Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7164920Z               "line": 9696
2026-06-22T01:08:01.7165022Z             }
2026-06-22T01:08:01.7165121Z           ]
2026-06-22T01:08:01.7165224Z         }
2026-06-22T01:08:01.7165329Z       }
2026-06-22T01:08:01.7165430Z     },
2026-06-22T01:08:01.7165639Z     {
2026-06-22T01:08:01.7165758Z       "id": "REQ-CONSENT-3",
2026-06-22T01:08:01.7167688Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-22T01:08:01.7167934Z       "requiredStages": [
2026-06-22T01:08:01.7168039Z         "doc",
2026-06-22T01:08:01.7168144Z         "impl",
2026-06-22T01:08:01.7168249Z         "unit",
2026-06-22T01:08:01.7168350Z         "int"
2026-06-22T01:08:01.7168444Z       ],
2026-06-22T01:08:01.7168555Z       "stages": {
2026-06-22T01:08:01.7168659Z         "doc": {
2026-06-22T01:08:01.7168773Z           "complete": true,
2026-06-22T01:08:01.7168879Z           "evidence": [
2026-06-22T01:08:01.7169054Z             {
2026-06-22T01:08:01.7169179Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.7169288Z               "line": 304
2026-06-22T01:08:01.7169393Z             }
2026-06-22T01:08:01.7169494Z           ]
2026-06-22T01:08:01.7169598Z         },
2026-06-22T01:08:01.7169707Z         "impl": {
2026-06-22T01:08:01.7169823Z           "complete": true,
2026-06-22T01:08:01.7169932Z           "evidence": [
2026-06-22T01:08:01.7170027Z             {
2026-06-22T01:08:01.7170186Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.7170308Z               "line": 123
2026-06-22T01:08:01.7170412Z             },
2026-06-22T01:08:01.7170513Z             {
2026-06-22T01:08:01.7170667Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.7170777Z               "line": 162
2026-06-22T01:08:01.7170893Z             },
2026-06-22T01:08:01.7171001Z             {
2026-06-22T01:08:01.7171150Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.7171254Z               "line": 291
2026-06-22T01:08:01.7171363Z             },
2026-06-22T01:08:01.7171460Z             {
2026-06-22T01:08:01.7171621Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7171731Z               "line": 574
2026-06-22T01:08:01.7171840Z             },
2026-06-22T01:08:01.7171945Z             {
2026-06-22T01:08:01.7172090Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7172212Z               "line": 824
2026-06-22T01:08:01.7172322Z             },
2026-06-22T01:08:01.7172428Z             {
2026-06-22T01:08:01.7172560Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7172671Z               "line": 6965
2026-06-22T01:08:01.7172776Z             }
2026-06-22T01:08:01.7172875Z           ]
2026-06-22T01:08:01.7172964Z         },
2026-06-22T01:08:01.7173065Z         "int": {
2026-06-22T01:08:01.7173182Z           "complete": true,
2026-06-22T01:08:01.7173291Z           "evidence": [
2026-06-22T01:08:01.7173397Z             {
2026-06-22T01:08:01.7173554Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T01:08:01.7173659Z               "line": 16
2026-06-22T01:08:01.7173769Z             }
2026-06-22T01:08:01.7173864Z           ]
2026-06-22T01:08:01.7173969Z         },
2026-06-22T01:08:01.7174079Z         "unit": {
2026-06-22T01:08:01.7174193Z           "complete": true,
2026-06-22T01:08:01.7174304Z           "evidence": [
2026-06-22T01:08:01.7174398Z             {
2026-06-22T01:08:01.7174550Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.7174661Z               "line": 1019
2026-06-22T01:08:01.7174765Z             },
2026-06-22T01:08:01.7174874Z             {
2026-06-22T01:08:01.7175027Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.7175253Z               "line": 1066
2026-06-22T01:08:01.7175356Z             },
2026-06-22T01:08:01.7175461Z             {
2026-06-22T01:08:01.7175610Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7175727Z               "line": 1394
2026-06-22T01:08:01.7175836Z             }
2026-06-22T01:08:01.7175937Z           ]
2026-06-22T01:08:01.7176042Z         }
2026-06-22T01:08:01.7176141Z       }
2026-06-22T01:08:01.7176247Z     },
2026-06-22T01:08:01.7176343Z     {
2026-06-22T01:08:01.7176451Z       "id": "REQ-CONV-1",
2026-06-22T01:08:01.7177874Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-22T01:08:01.7178125Z       "requiredStages": [
2026-06-22T01:08:01.7178238Z         "impl",
2026-06-22T01:08:01.7178341Z         "unit"
2026-06-22T01:08:01.7178442Z       ],
2026-06-22T01:08:01.7178547Z       "stages": {
2026-06-22T01:08:01.7178651Z         "doc": {
2026-06-22T01:08:01.7178776Z           "complete": false,
2026-06-22T01:08:01.7178885Z           "evidence": []
2026-06-22T01:08:01.7179047Z         },
2026-06-22T01:08:01.7179158Z         "impl": {
2026-06-22T01:08:01.7179276Z           "complete": true,
2026-06-22T01:08:01.7179386Z           "evidence": [
2026-06-22T01:08:01.7179477Z             {
2026-06-22T01:08:01.7179638Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7179749Z               "line": 988
2026-06-22T01:08:01.7179853Z             },
2026-06-22T01:08:01.7179962Z             {
2026-06-22T01:08:01.7180117Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.7180235Z               "line": 94
2026-06-22T01:08:01.7180330Z             },
2026-06-22T01:08:01.7180436Z             {
2026-06-22T01:08:01.7180582Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.7180698Z               "line": 345
2026-06-22T01:08:01.7180798Z             },
2026-06-22T01:08:01.7180896Z             {
2026-06-22T01:08:01.7181049Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.7181157Z               "line": 387
2026-06-22T01:08:01.7181261Z             },
2026-06-22T01:08:01.7181361Z             {
2026-06-22T01:08:01.7181509Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.7181638Z               "line": 472
2026-06-22T01:08:01.7181729Z             },
2026-06-22T01:08:01.7181833Z             {
2026-06-22T01:08:01.7181977Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7182091Z               "line": 667
2026-06-22T01:08:01.7182190Z             },
2026-06-22T01:08:01.7182296Z             {
2026-06-22T01:08:01.7182449Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7182563Z               "line": 693
2026-06-22T01:08:01.7182664Z             },
2026-06-22T01:08:01.7182758Z             {
2026-06-22T01:08:01.7182912Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.7183030Z               "line": 369
2026-06-22T01:08:01.7183135Z             },
2026-06-22T01:08:01.7183246Z             {
2026-06-22T01:08:01.7183397Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:08:01.7183510Z               "line": 19
2026-06-22T01:08:01.7183611Z             }
2026-06-22T01:08:01.7183732Z           ]
2026-06-22T01:08:01.7183827Z         },
2026-06-22T01:08:01.7183938Z         "int": {
2026-06-22T01:08:01.7184057Z           "complete": false,
2026-06-22T01:08:01.7184156Z           "evidence": []
2026-06-22T01:08:01.7184262Z         },
2026-06-22T01:08:01.7184372Z         "unit": {
2026-06-22T01:08:01.7184495Z           "complete": true,
2026-06-22T01:08:01.7184710Z           "evidence": [
2026-06-22T01:08:01.7184815Z             {
2026-06-22T01:08:01.7184963Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7185077Z               "line": 1263
2026-06-22T01:08:01.7185183Z             },
2026-06-22T01:08:01.7185282Z             {
2026-06-22T01:08:01.7185434Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:08:01.7185550Z               "line": 108
2026-06-22T01:08:01.7185659Z             },
2026-06-22T01:08:01.7185759Z             {
2026-06-22T01:08:01.7185902Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:08:01.7186118Z               "line": 134
2026-06-22T01:08:01.7186222Z             },
2026-06-22T01:08:01.7186331Z             {
2026-06-22T01:08:01.7186479Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T01:08:01.7186593Z               "line": 144
2026-06-22T01:08:01.7186697Z             }
2026-06-22T01:08:01.7186798Z           ]
2026-06-22T01:08:01.7186913Z         }
2026-06-22T01:08:01.7187007Z       }
2026-06-22T01:08:01.7187104Z     },
2026-06-22T01:08:01.7187203Z     {
2026-06-22T01:08:01.7187326Z       "id": "REQ-CONV-2",
2026-06-22T01:08:01.7188485Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-22T01:08:01.7188604Z       "requiredStages": [
2026-06-22T01:08:01.7188718Z         "impl",
2026-06-22T01:08:01.7188826Z         "unit"
2026-06-22T01:08:01.7188930Z       ],
2026-06-22T01:08:01.7189122Z       "stages": {
2026-06-22T01:08:01.7189225Z         "doc": {
2026-06-22T01:08:01.7189351Z           "complete": false,
2026-06-22T01:08:01.7189450Z           "evidence": []
2026-06-22T01:08:01.7189559Z         },
2026-06-22T01:08:01.7189670Z         "impl": {
2026-06-22T01:08:01.7189789Z           "complete": true,
2026-06-22T01:08:01.7189893Z           "evidence": [
2026-06-22T01:08:01.7189994Z             {
2026-06-22T01:08:01.7190146Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7190251Z               "line": 409
2026-06-22T01:08:01.7190357Z             },
2026-06-22T01:08:01.7190461Z             {
2026-06-22T01:08:01.7190620Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.7190733Z               "line": 119
2026-06-22T01:08:01.7190837Z             },
2026-06-22T01:08:01.7190944Z             {
2026-06-22T01:08:01.7191109Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.7191225Z               "line": 841
2026-06-22T01:08:01.7191335Z             },
2026-06-22T01:08:01.7191437Z             {
2026-06-22T01:08:01.7191604Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.7191712Z               "line": 852
2026-06-22T01:08:01.7191816Z             },
2026-06-22T01:08:01.7191921Z             {
2026-06-22T01:08:01.7192074Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.7192193Z               "line": 334
2026-06-22T01:08:01.7192294Z             },
2026-06-22T01:08:01.7192398Z             {
2026-06-22T01:08:01.7192528Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7192637Z               "line": 3074
2026-06-22T01:08:01.7192736Z             },
2026-06-22T01:08:01.7192847Z             {
2026-06-22T01:08:01.7192975Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7193085Z               "line": 3090
2026-06-22T01:08:01.7193200Z             },
2026-06-22T01:08:01.7193294Z             {
2026-06-22T01:08:01.7193428Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7193544Z               "line": 3170
2026-06-22T01:08:01.7193652Z             }
2026-06-22T01:08:01.7193758Z           ]
2026-06-22T01:08:01.7193948Z         },
2026-06-22T01:08:01.7194061Z         "int": {
2026-06-22T01:08:01.7194176Z           "complete": false,
2026-06-22T01:08:01.7194283Z           "evidence": []
2026-06-22T01:08:01.7194388Z         },
2026-06-22T01:08:01.7194498Z         "unit": {
2026-06-22T01:08:01.7194603Z           "complete": true,
2026-06-22T01:08:01.7194707Z           "evidence": [
2026-06-22T01:08:01.7194814Z             {
2026-06-22T01:08:01.7194974Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7195094Z               "line": 889
2026-06-22T01:08:01.7195199Z             },
2026-06-22T01:08:01.7195303Z             {
2026-06-22T01:08:01.7195448Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7195652Z               "line": 1014
2026-06-22T01:08:01.7195758Z             },
2026-06-22T01:08:01.7195856Z             {
2026-06-22T01:08:01.7196024Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.7196134Z               "line": 215
2026-06-22T01:08:01.7196248Z             }
2026-06-22T01:08:01.7196354Z           ]
2026-06-22T01:08:01.7196453Z         }
2026-06-22T01:08:01.7196558Z       }
2026-06-22T01:08:01.7196659Z     },
2026-06-22T01:08:01.7196764Z     {
2026-06-22T01:08:01.7196881Z       "id": "REQ-DAEMON-1",
2026-06-22T01:08:01.7197082Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-22T01:08:01.7197205Z       "requiredStages": [
2026-06-22T01:08:01.7197315Z         "impl",
2026-06-22T01:08:01.7197420Z         "unit",
2026-06-22T01:08:01.7197524Z         "int"
2026-06-22T01:08:01.7197630Z       ],
2026-06-22T01:08:01.7197730Z       "stages": {
2026-06-22T01:08:01.7197834Z         "doc": {
2026-06-22T01:08:01.7197959Z           "complete": false,
2026-06-22T01:08:01.7198064Z           "evidence": []
2026-06-22T01:08:01.7198168Z         },
2026-06-22T01:08:01.7198269Z         "impl": {
2026-06-22T01:08:01.7198393Z           "complete": true,
2026-06-22T01:08:01.7198497Z           "evidence": [
2026-06-22T01:08:01.7198603Z             {
2026-06-22T01:08:01.7198764Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7198869Z               "line": 229
2026-06-22T01:08:01.7199055Z             },
2026-06-22T01:08:01.7199154Z             {
2026-06-22T01:08:01.7199302Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.7199405Z               "line": 12
2026-06-22T01:08:01.7199514Z             },
2026-06-22T01:08:01.7199619Z             {
2026-06-22T01:08:01.7199767Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7199881Z               "line": 16
2026-06-22T01:08:01.7199987Z             },
2026-06-22T01:08:01.7200091Z             {
2026-06-22T01:08:01.7200245Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7200363Z               "line": 309
2026-06-22T01:08:01.7200462Z             },
2026-06-22T01:08:01.7200564Z             {
2026-06-22T01:08:01.7200721Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7200835Z               "line": 24
2026-06-22T01:08:01.7200940Z             },
2026-06-22T01:08:01.7201050Z             {
2026-06-22T01:08:01.7201213Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7201331Z               "line": 262
2026-06-22T01:08:01.7201431Z             },
2026-06-22T01:08:01.7201537Z             {
2026-06-22T01:08:01.7201684Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7201794Z               "line": 279
2026-06-22T01:08:01.7201904Z             },
2026-06-22T01:08:01.7202007Z             {
2026-06-22T01:08:01.7202155Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7202277Z               "line": 356
2026-06-22T01:08:01.7202381Z             },
2026-06-22T01:08:01.7202477Z             {
2026-06-22T01:08:01.7202639Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7256479Z               "line": 670
2026-06-22T01:08:01.7256614Z             },
2026-06-22T01:08:01.7257210Z             {
2026-06-22T01:08:01.7257399Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T01:08:01.7257584Z               "line": 15
2026-06-22T01:08:01.7257701Z             },
2026-06-22T01:08:01.7257806Z             {
2026-06-22T01:08:01.7257969Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.7258082Z               "line": 241
2026-06-22T01:08:01.7258207Z             },
2026-06-22T01:08:01.7258321Z             {
2026-06-22T01:08:01.7258484Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T01:08:01.7258598Z               "line": 13
2026-06-22T01:08:01.7258702Z             },
2026-06-22T01:08:01.7258937Z             {
2026-06-22T01:08:01.7259157Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7259275Z               "line": 382
2026-06-22T01:08:01.7259375Z             },
2026-06-22T01:08:01.7259476Z             {
2026-06-22T01:08:01.7259613Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7259724Z               "line": 494
2026-06-22T01:08:01.7259833Z             }
2026-06-22T01:08:01.7259933Z           ]
2026-06-22T01:08:01.7260030Z         },
2026-06-22T01:08:01.7260134Z         "int": {
2026-06-22T01:08:01.7260256Z           "complete": true,
2026-06-22T01:08:01.7260356Z           "evidence": [
2026-06-22T01:08:01.7260462Z             {
2026-06-22T01:08:01.7260676Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T01:08:01.7260781Z               "line": 2
2026-06-22T01:08:01.7260895Z             },
2026-06-22T01:08:01.7261000Z             {
2026-06-22T01:08:01.7261209Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T01:08:01.7261339Z               "line": 16
2026-06-22T01:08:01.7261439Z             },
2026-06-22T01:08:01.7261538Z             {
2026-06-22T01:08:01.7261706Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-22T01:08:01.7261825Z               "line": 12
2026-06-22T01:08:01.7261935Z             },
2026-06-22T01:08:01.7262026Z             {
2026-06-22T01:08:01.7262192Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-22T01:08:01.7262308Z               "line": 12
2026-06-22T01:08:01.7262425Z             },
2026-06-22T01:08:01.7262515Z             {
2026-06-22T01:08:01.7262687Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:08:01.7262790Z               "line": 44
2026-06-22T01:08:01.7262884Z             }
2026-06-22T01:08:01.7262995Z           ]
2026-06-22T01:08:01.7263095Z         },
2026-06-22T01:08:01.7263209Z         "unit": {
2026-06-22T01:08:01.7263334Z           "complete": true,
2026-06-22T01:08:01.7263433Z           "evidence": [
2026-06-22T01:08:01.7263543Z             {
2026-06-22T01:08:01.7263700Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.7263814Z               "line": 285
2026-06-22T01:08:01.7263911Z             },
2026-06-22T01:08:01.7264011Z             {
2026-06-22T01:08:01.7264153Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.7264263Z               "line": 293
2026-06-22T01:08:01.7264368Z             },
2026-06-22T01:08:01.7264472Z             {
2026-06-22T01:08:01.7264626Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.7264740Z               "line": 309
2026-06-22T01:08:01.7264851Z             },
2026-06-22T01:08:01.7264950Z             {
2026-06-22T01:08:01.7265097Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.7265218Z               "line": 317
2026-06-22T01:08:01.7265321Z             },
2026-06-22T01:08:01.7265430Z             {
2026-06-22T01:08:01.7265582Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7265694Z               "line": 659
2026-06-22T01:08:01.7265805Z             },
2026-06-22T01:08:01.7265905Z             {
2026-06-22T01:08:01.7266066Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7266352Z               "line": 729
2026-06-22T01:08:01.7266506Z             },
2026-06-22T01:08:01.7266602Z             {
2026-06-22T01:08:01.7266763Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7266887Z               "line": 1211
2026-06-22T01:08:01.7266987Z             },
2026-06-22T01:08:01.7267093Z             {
2026-06-22T01:08:01.7267244Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7267364Z               "line": 1248
2026-06-22T01:08:01.7267465Z             },
2026-06-22T01:08:01.7267563Z             {
2026-06-22T01:08:01.7267708Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7267916Z               "line": 1271
2026-06-22T01:08:01.7268025Z             },
2026-06-22T01:08:01.7268126Z             {
2026-06-22T01:08:01.7268275Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7268385Z               "line": 1300
2026-06-22T01:08:01.7268497Z             },
2026-06-22T01:08:01.7268604Z             {
2026-06-22T01:08:01.7268754Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7268876Z               "line": 1348
2026-06-22T01:08:01.7269044Z             },
2026-06-22T01:08:01.7269144Z             {
2026-06-22T01:08:01.7269296Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7269411Z               "line": 1391
2026-06-22T01:08:01.7269516Z             },
2026-06-22T01:08:01.7269611Z             {
2026-06-22T01:08:01.7269759Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T01:08:01.7269873Z               "line": 106
2026-06-22T01:08:01.7269970Z             },
2026-06-22T01:08:01.7270083Z             {
2026-06-22T01:08:01.7270217Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T01:08:01.7270323Z               "line": 132
2026-06-22T01:08:01.7270417Z             },
2026-06-22T01:08:01.7270517Z             {
2026-06-22T01:08:01.7270661Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.7270769Z               "line": 530
2026-06-22T01:08:01.7270877Z             }
2026-06-22T01:08:01.7270979Z           ]
2026-06-22T01:08:01.7271084Z         }
2026-06-22T01:08:01.7271183Z       }
2026-06-22T01:08:01.7271284Z     },
2026-06-22T01:08:01.7271385Z     {
2026-06-22T01:08:01.7271512Z       "id": "REQ-DAEMON-2",
2026-06-22T01:08:01.7271684Z       "title": "Broker/brain split for seamless self-update",
2026-06-22T01:08:01.7271793Z       "requiredStages": [
2026-06-22T01:08:01.7271899Z         "impl",
2026-06-22T01:08:01.7272004Z         "unit",
2026-06-22T01:08:01.7272113Z         "int"
2026-06-22T01:08:01.7272214Z       ],
2026-06-22T01:08:01.7272323Z       "stages": {
2026-06-22T01:08:01.7272428Z         "doc": {
2026-06-22T01:08:01.7272544Z           "complete": true,
2026-06-22T01:08:01.7272652Z           "evidence": [
2026-06-22T01:08:01.7272752Z             {
2026-06-22T01:08:01.7272887Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-22T01:08:01.7273004Z               "line": 250
2026-06-22T01:08:01.7273109Z             }
2026-06-22T01:08:01.7273214Z           ]
2026-06-22T01:08:01.7273317Z         },
2026-06-22T01:08:01.7273420Z         "impl": {
2026-06-22T01:08:01.7273531Z           "complete": true,
2026-06-22T01:08:01.7273645Z           "evidence": [
2026-06-22T01:08:01.7273745Z             {
2026-06-22T01:08:01.7273899Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7274007Z               "line": 23
2026-06-22T01:08:01.7274113Z             },
2026-06-22T01:08:01.7274209Z             {
2026-06-22T01:08:01.7274346Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7274467Z               "line": 922
2026-06-22T01:08:01.7274566Z             },
2026-06-22T01:08:01.7274665Z             {
2026-06-22T01:08:01.7274814Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7274923Z               "line": 963
2026-06-22T01:08:01.7275027Z             },
2026-06-22T01:08:01.7275125Z             {
2026-06-22T01:08:01.7275382Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7275501Z               "line": 1199
2026-06-22T01:08:01.7275600Z             },
2026-06-22T01:08:01.7275701Z             {
2026-06-22T01:08:01.7275844Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7275961Z               "line": 32
2026-06-22T01:08:01.7276067Z             },
2026-06-22T01:08:01.7276179Z             {
2026-06-22T01:08:01.7276316Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7276437Z               "line": 1257
2026-06-22T01:08:01.7276541Z             },
2026-06-22T01:08:01.7276742Z             {
2026-06-22T01:08:01.7276903Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7277014Z               "line": 2098
2026-06-22T01:08:01.7277123Z             },
2026-06-22T01:08:01.7277228Z             {
2026-06-22T01:08:01.7277376Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7277500Z               "line": 2385
2026-06-22T01:08:01.7277600Z             },
2026-06-22T01:08:01.7277705Z             {
2026-06-22T01:08:01.7277838Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:08:01.7277943Z               "line": 11
2026-06-22T01:08:01.7278049Z             },
2026-06-22T01:08:01.7278152Z             {
2026-06-22T01:08:01.7278292Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7278401Z               "line": 153
2026-06-22T01:08:01.7278504Z             },
2026-06-22T01:08:01.7278600Z             {
2026-06-22T01:08:01.7278737Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7278845Z               "line": 343
2026-06-22T01:08:01.7279018Z             },
2026-06-22T01:08:01.7279117Z             {
2026-06-22T01:08:01.7279256Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7279356Z               "line": 13
2026-06-22T01:08:01.7279456Z             },
2026-06-22T01:08:01.7279561Z             {
2026-06-22T01:08:01.7279709Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7279822Z               "line": 27
2026-06-22T01:08:01.7279933Z             },
2026-06-22T01:08:01.7280028Z             {
2026-06-22T01:08:01.7280180Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7280291Z               "line": 173
2026-06-22T01:08:01.7280400Z             },
2026-06-22T01:08:01.7280505Z             {
2026-06-22T01:08:01.7280648Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7280762Z               "line": 682
2026-06-22T01:08:01.7280854Z             },
2026-06-22T01:08:01.7280958Z             {
2026-06-22T01:08:01.7281106Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7281217Z               "line": 903
2026-06-22T01:08:01.7281315Z             },
2026-06-22T01:08:01.7281419Z             {
2026-06-22T01:08:01.7281568Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7281681Z               "line": 1050
2026-06-22T01:08:01.7281791Z             },
2026-06-22T01:08:01.7281887Z             {
2026-06-22T01:08:01.7282034Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7282159Z               "line": 1139
2026-06-22T01:08:01.7282259Z             },
2026-06-22T01:08:01.7282363Z             {
2026-06-22T01:08:01.7282512Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7282626Z               "line": 1261
2026-06-22T01:08:01.7282730Z             },
2026-06-22T01:08:01.7282832Z             {
2026-06-22T01:08:01.7282983Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:08:01.7283089Z               "line": 10
2026-06-22T01:08:01.7283189Z             }
2026-06-22T01:08:01.7283284Z           ]
2026-06-22T01:08:01.7283389Z         },
2026-06-22T01:08:01.7283494Z         "int": {
2026-06-22T01:08:01.7283607Z           "complete": true,
2026-06-22T01:08:01.7283721Z           "evidence": [
2026-06-22T01:08:01.7283934Z             {
2026-06-22T01:08:01.7284091Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.7284201Z               "line": 17
2026-06-22T01:08:01.7284305Z             },
2026-06-22T01:08:01.7284411Z             {
2026-06-22T01:08:01.7284577Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:08:01.7284687Z               "line": 90
2026-06-22T01:08:01.7284792Z             },
2026-06-22T01:08:01.7284896Z             {
2026-06-22T01:08:01.7285046Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:08:01.7285160Z               "line": 110
2026-06-22T01:08:01.7285264Z             },
2026-06-22T01:08:01.7285493Z             {
2026-06-22T01:08:01.7285646Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:08:01.7285750Z               "line": 186
2026-06-22T01:08:01.7285860Z             },
2026-06-22T01:08:01.7285966Z             {
2026-06-22T01:08:01.7286127Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:08:01.7286252Z               "line": 309
2026-06-22T01:08:01.7286352Z             },
2026-06-22T01:08:01.7286456Z             {
2026-06-22T01:08:01.7286612Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T01:08:01.7286730Z               "line": 128
2026-06-22T01:08:01.7286825Z             },
2026-06-22T01:08:01.7286925Z             {
2026-06-22T01:08:01.7287082Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T01:08:01.7287196Z               "line": 59
2026-06-22T01:08:01.7287297Z             }
2026-06-22T01:08:01.7287402Z           ]
2026-06-22T01:08:01.7287496Z         },
2026-06-22T01:08:01.7287603Z         "unit": {
2026-06-22T01:08:01.7287717Z           "complete": true,
2026-06-22T01:08:01.7287821Z           "evidence": [
2026-06-22T01:08:01.7287922Z             {
2026-06-22T01:08:01.7288069Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:08:01.7288179Z               "line": 62
2026-06-22T01:08:01.7288279Z             },
2026-06-22T01:08:01.7288388Z             {
2026-06-22T01:08:01.7288533Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:08:01.7288651Z               "line": 76
2026-06-22T01:08:01.7288747Z             },
2026-06-22T01:08:01.7288848Z             {
2026-06-22T01:08:01.7289050Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T01:08:01.7289150Z               "line": 88
2026-06-22T01:08:01.7289260Z             },
2026-06-22T01:08:01.7289363Z             {
2026-06-22T01:08:01.7289520Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.7289631Z               "line": 347
2026-06-22T01:08:01.7289739Z             },
2026-06-22T01:08:01.7289845Z             {
2026-06-22T01:08:01.7289983Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7290092Z               "line": 901
2026-06-22T01:08:01.7290198Z             },
2026-06-22T01:08:01.7290293Z             {
2026-06-22T01:08:01.7290426Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7290551Z               "line": 909
2026-06-22T01:08:01.7290650Z             },
2026-06-22T01:08:01.7290755Z             {
2026-06-22T01:08:01.7290894Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7291017Z               "line": 926
2026-06-22T01:08:01.7291118Z             },
2026-06-22T01:08:01.7291203Z             {
2026-06-22T01:08:01.7291337Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7291452Z               "line": 1035
2026-06-22T01:08:01.7291561Z             },
2026-06-22T01:08:01.7291661Z             {
2026-06-22T01:08:01.7291815Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7291936Z               "line": 1370
2026-06-22T01:08:01.7292027Z             },
2026-06-22T01:08:01.7292137Z             {
2026-06-22T01:08:01.7292270Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7292385Z               "line": 1382
2026-06-22T01:08:01.7292584Z             },
2026-06-22T01:08:01.7292696Z             {
2026-06-22T01:08:01.7292853Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:08:01.7292957Z               "line": 110
2026-06-22T01:08:01.7293063Z             },
2026-06-22T01:08:01.7293157Z             {
2026-06-22T01:08:01.7293320Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:08:01.7293439Z               "line": 145
2026-06-22T01:08:01.7293543Z             }
2026-06-22T01:08:01.7293645Z           ]
2026-06-22T01:08:01.7293745Z         }
2026-06-22T01:08:01.7293854Z       }
2026-06-22T01:08:01.7293954Z     },
2026-06-22T01:08:01.7294050Z     {
2026-06-22T01:08:01.7294267Z       "id": "REQ-DAEMON-3",
2026-06-22T01:08:01.7294451Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-22T01:08:01.7294569Z       "requiredStages": [
2026-06-22T01:08:01.7294671Z         "impl",
2026-06-22T01:08:01.7294784Z         "unit",
2026-06-22T01:08:01.7294884Z         "int"
2026-06-22T01:08:01.7294991Z       ],
2026-06-22T01:08:01.7295095Z       "stages": {
2026-06-22T01:08:01.7295208Z         "doc": {
2026-06-22T01:08:01.7295347Z           "complete": false,
2026-06-22T01:08:01.7295456Z           "evidence": []
2026-06-22T01:08:01.7295567Z         },
2026-06-22T01:08:01.7295662Z         "impl": {
2026-06-22T01:08:01.7295785Z           "complete": true,
2026-06-22T01:08:01.7295896Z           "evidence": [
2026-06-22T01:08:01.7296005Z             {
2026-06-22T01:08:01.7296158Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7296269Z               "line": 14
2026-06-22T01:08:01.7296367Z             },
2026-06-22T01:08:01.7296473Z             {
2026-06-22T01:08:01.7296630Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:08:01.7296749Z               "line": 11
2026-06-22T01:08:01.7296850Z             },
2026-06-22T01:08:01.7296955Z             {
2026-06-22T01:08:01.7297096Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.7297220Z               "line": 305
2026-06-22T01:08:01.7297323Z             },
2026-06-22T01:08:01.7297432Z             {
2026-06-22T01:08:01.7297571Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7297685Z               "line": 1956
2026-06-22T01:08:01.7297790Z             },
2026-06-22T01:08:01.7297881Z             {
2026-06-22T01:08:01.7298014Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7298129Z               "line": 4235
2026-06-22T01:08:01.7298229Z             },
2026-06-22T01:08:01.7298324Z             {
2026-06-22T01:08:01.7298463Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7298577Z               "line": 4256
2026-06-22T01:08:01.7298677Z             }
2026-06-22T01:08:01.7298783Z           ]
2026-06-22T01:08:01.7298887Z         },
2026-06-22T01:08:01.7299054Z         "int": {
2026-06-22T01:08:01.7299174Z           "complete": true,
2026-06-22T01:08:01.7299345Z           "evidence": [
2026-06-22T01:08:01.7299507Z             {
2026-06-22T01:08:01.7299796Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.7300008Z               "line": 49
2026-06-22T01:08:01.7300138Z             },
2026-06-22T01:08:01.7300294Z             {
2026-06-22T01:08:01.7300472Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.7300676Z               "line": 487
2026-06-22T01:08:01.7300839Z             }
2026-06-22T01:08:01.7301001Z           ]
2026-06-22T01:08:01.7301172Z         },
2026-06-22T01:08:01.7301306Z         "unit": {
2026-06-22T01:08:01.7301511Z           "complete": true,
2026-06-22T01:08:01.7301684Z           "evidence": [
2026-06-22T01:08:01.7301840Z             {
2026-06-22T01:08:01.7302017Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7302193Z               "line": 1553
2026-06-22T01:08:01.7302393Z             },
2026-06-22T01:08:01.7302539Z             {
2026-06-22T01:08:01.7302732Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7302989Z               "line": 10715
2026-06-22T01:08:01.7303164Z             }
2026-06-22T01:08:01.7303351Z           ]
2026-06-22T01:08:01.7303497Z         }
2026-06-22T01:08:01.7303646Z       }
2026-06-22T01:08:01.7303775Z     },
2026-06-22T01:08:01.7303957Z     {
2026-06-22T01:08:01.7304085Z       "id": "REQ-DAEMON-4",
2026-06-22T01:08:01.7304347Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-22T01:08:01.7304529Z       "requiredStages": [
2026-06-22T01:08:01.7304661Z         "impl",
2026-06-22T01:08:01.7304837Z         "unit",
2026-06-22T01:08:01.7304951Z         "int"
2026-06-22T01:08:01.7305164Z       ],
2026-06-22T01:08:01.7305299Z       "stages": {
2026-06-22T01:08:01.7305588Z         "doc": {
2026-06-22T01:08:01.7305769Z           "complete": false,
2026-06-22T01:08:01.7305885Z           "evidence": []
2026-06-22T01:08:01.7306103Z         },
2026-06-22T01:08:01.7306232Z         "impl": {
2026-06-22T01:08:01.7306427Z           "complete": true,
2026-06-22T01:08:01.7306561Z           "evidence": [
2026-06-22T01:08:01.7306718Z             {
2026-06-22T01:08:01.7306985Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7307125Z               "line": 464
2026-06-22T01:08:01.7307309Z             },
2026-06-22T01:08:01.7307439Z             {
2026-06-22T01:08:01.7307642Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7307869Z               "line": 529
2026-06-22T01:08:01.7308016Z             },
2026-06-22T01:08:01.7308175Z             {
2026-06-22T01:08:01.7308355Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7308504Z               "line": 551
2026-06-22T01:08:01.7308680Z             }
2026-06-22T01:08:01.7308870Z           ]
2026-06-22T01:08:01.7309094Z         },
2026-06-22T01:08:01.7309223Z         "int": {
2026-06-22T01:08:01.7309414Z           "complete": true,
2026-06-22T01:08:01.7309595Z           "evidence": [
2026-06-22T01:08:01.7309794Z             {
2026-06-22T01:08:01.7309982Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T01:08:01.7310166Z               "line": 42
2026-06-22T01:08:01.7310314Z             }
2026-06-22T01:08:01.7310488Z           ]
2026-06-22T01:08:01.7310679Z         },
2026-06-22T01:08:01.7310817Z         "unit": {
2026-06-22T01:08:01.7310994Z           "complete": true,
2026-06-22T01:08:01.7311126Z           "evidence": [
2026-06-22T01:08:01.7311313Z             {
2026-06-22T01:08:01.7311547Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.7311689Z               "line": 428
2026-06-22T01:08:01.7311842Z             },
2026-06-22T01:08:01.7311976Z             {
2026-06-22T01:08:01.7312234Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7312428Z               "line": 957
2026-06-22T01:08:01.7312564Z             },
2026-06-22T01:08:01.7312734Z             {
2026-06-22T01:08:01.7312911Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7313133Z               "line": 1027
2026-06-22T01:08:01.7313277Z             },
2026-06-22T01:08:01.7313438Z             {
2026-06-22T01:08:01.7313649Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7313782Z               "line": 1057
2026-06-22T01:08:01.7313987Z             },
2026-06-22T01:08:01.7314130Z             {
2026-06-22T01:08:01.7314330Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7314498Z               "line": 1090
2026-06-22T01:08:01.7314645Z             }
2026-06-22T01:08:01.7314822Z           ]
2026-06-22T01:08:01.7314969Z         }
2026-06-22T01:08:01.7315132Z       }
2026-06-22T01:08:01.7315259Z     },
2026-06-22T01:08:01.7315440Z     {
2026-06-22T01:08:01.7315643Z       "id": "REQ-DAEMON-5",
2026-06-22T01:08:01.7317230Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-22T01:08:01.7317536Z       "requiredStages": [
2026-06-22T01:08:01.7317690Z         "impl",
2026-06-22T01:08:01.7317851Z         "unit"
2026-06-22T01:08:01.7318047Z       ],
2026-06-22T01:08:01.7318202Z       "stages": {
2026-06-22T01:08:01.7318364Z         "doc": {
2026-06-22T01:08:01.7318519Z           "complete": false,
2026-06-22T01:08:01.7318706Z           "evidence": []
2026-06-22T01:08:01.7318891Z         },
2026-06-22T01:08:01.7319511Z         "impl": {
2026-06-22T01:08:01.7319836Z           "complete": true,
2026-06-22T01:08:01.7319970Z           "evidence": [
2026-06-22T01:08:01.7320136Z             {
2026-06-22T01:08:01.7320308Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7320547Z               "line": 476
2026-06-22T01:08:01.7320731Z             },
2026-06-22T01:08:01.7320869Z             {
2026-06-22T01:08:01.7321091Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7321210Z               "line": 769
2026-06-22T01:08:01.7321438Z             },
2026-06-22T01:08:01.7321568Z             {
2026-06-22T01:08:01.7321782Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7321959Z               "line": 782
2026-06-22T01:08:01.7322077Z             },
2026-06-22T01:08:01.7322312Z             {
2026-06-22T01:08:01.7322494Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7322659Z               "line": 800
2026-06-22T01:08:01.7322818Z             },
2026-06-22T01:08:01.7322936Z             {
2026-06-22T01:08:01.7323217Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7323361Z               "line": 841
2026-06-22T01:08:01.7323523Z             }
2026-06-22T01:08:01.7323645Z           ]
2026-06-22T01:08:01.7323809Z         },
2026-06-22T01:08:01.7324037Z         "int": {
2026-06-22T01:08:01.7324190Z           "complete": false,
2026-06-22T01:08:01.7324352Z           "evidence": []
2026-06-22T01:08:01.7324485Z         },
2026-06-22T01:08:01.7324637Z         "unit": {
2026-06-22T01:08:01.7324833Z           "complete": true,
2026-06-22T01:08:01.7325020Z           "evidence": [
2026-06-22T01:08:01.7325186Z             {
2026-06-22T01:08:01.7325368Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7325543Z               "line": 1189
2026-06-22T01:08:01.7325711Z             },
2026-06-22T01:08:01.7325890Z             {
2026-06-22T01:08:01.7326104Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7326250Z               "line": 1213
2026-06-22T01:08:01.7326414Z             },
2026-06-22T01:08:01.7326584Z             {
2026-06-22T01:08:01.7326818Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.7326966Z               "line": 1239
2026-06-22T01:08:01.7327137Z             }
2026-06-22T01:08:01.7327305Z           ]
2026-06-22T01:08:01.7327476Z         }
2026-06-22T01:08:01.7327658Z       }
2026-06-22T01:08:01.7327786Z     },
2026-06-22T01:08:01.7327963Z     {
2026-06-22T01:08:01.7328110Z       "id": "REQ-DAEMON-6",
2026-06-22T01:08:01.7330334Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-22T01:08:01.7330558Z       "requiredStages": [
2026-06-22T01:08:01.7330730Z         "impl",
2026-06-22T01:08:01.7331001Z         "unit"
2026-06-22T01:08:01.7331136Z       ],
2026-06-22T01:08:01.7331320Z       "stages": {
2026-06-22T01:08:01.7331496Z         "doc": {
2026-06-22T01:08:01.7331656Z           "complete": false,
2026-06-22T01:08:01.7331838Z           "evidence": []
2026-06-22T01:08:01.7331989Z         },
2026-06-22T01:08:01.7332157Z         "impl": {
2026-06-22T01:08:01.7332352Z           "complete": true,
2026-06-22T01:08:01.7332500Z           "evidence": [
2026-06-22T01:08:01.7332662Z             {
2026-06-22T01:08:01.7332848Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7333049Z               "line": 495
2026-06-22T01:08:01.7333402Z             },
2026-06-22T01:08:01.7333631Z             {
2026-06-22T01:08:01.7333849Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7333994Z               "line": 526
2026-06-22T01:08:01.7334182Z             },
2026-06-22T01:08:01.7334335Z             {
2026-06-22T01:08:01.7334549Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7334731Z               "line": 55
2026-06-22T01:08:01.7334859Z             },
2026-06-22T01:08:01.7335031Z             {
2026-06-22T01:08:01.7335236Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7335412Z               "line": 70
2026-06-22T01:08:01.7335585Z             },
2026-06-22T01:08:01.7335708Z             {
2026-06-22T01:08:01.7335947Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7336108Z               "line": 2020
2026-06-22T01:08:01.7336281Z             },
2026-06-22T01:08:01.7336413Z             {
2026-06-22T01:08:01.7336608Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7336820Z               "line": 2046
2026-06-22T01:08:01.7336964Z             }
2026-06-22T01:08:01.7337125Z           ]
2026-06-22T01:08:01.7337255Z         },
2026-06-22T01:08:01.7337420Z         "int": {
2026-06-22T01:08:01.7337570Z           "complete": false,
2026-06-22T01:08:01.7337798Z           "evidence": []
2026-06-22T01:08:01.7337965Z         },
2026-06-22T01:08:01.7338093Z         "unit": {
2026-06-22T01:08:01.7338284Z           "complete": true,
2026-06-22T01:08:01.7338408Z           "evidence": [
2026-06-22T01:08:01.7338618Z             {
2026-06-22T01:08:01.7338833Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7339038Z               "line": 288
2026-06-22T01:08:01.7339205Z             },
2026-06-22T01:08:01.7339346Z             {
2026-06-22T01:08:01.7339592Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7339730Z               "line": 299
2026-06-22T01:08:01.7339902Z             },
2026-06-22T01:08:01.7340074Z             {
2026-06-22T01:08:01.7340236Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7340456Z               "line": 325
2026-06-22T01:08:01.7340584Z             },
2026-06-22T01:08:01.7340747Z             {
2026-06-22T01:08:01.7340936Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7341090Z               "line": 351
2026-06-22T01:08:01.7341299Z             }
2026-06-22T01:08:01.7341429Z           ]
2026-06-22T01:08:01.7341610Z         }
2026-06-22T01:08:01.7341739Z       }
2026-06-22T01:08:01.7341885Z     },
2026-06-22T01:08:01.7342093Z     {
2026-06-22T01:08:01.7342240Z       "id": "REQ-DAEMON-7",
2026-06-22T01:08:01.7343771Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-22T01:08:01.7343924Z       "requiredStages": [
2026-06-22T01:08:01.7344071Z         "impl",
2026-06-22T01:08:01.7344282Z         "unit"
2026-06-22T01:08:01.7344525Z       ],
2026-06-22T01:08:01.7344690Z       "stages": {
2026-06-22T01:08:01.7344828Z         "doc": {
2026-06-22T01:08:01.7344982Z           "complete": false,
2026-06-22T01:08:01.7345162Z           "evidence": []
2026-06-22T01:08:01.7345362Z         },
2026-06-22T01:08:01.7345525Z         "impl": {
2026-06-22T01:08:01.7345667Z           "complete": true,
2026-06-22T01:08:01.7345825Z           "evidence": [
2026-06-22T01:08:01.7345992Z             {
2026-06-22T01:08:01.7346249Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7346426Z               "line": 545
2026-06-22T01:08:01.7346559Z             },
2026-06-22T01:08:01.7346712Z             {
2026-06-22T01:08:01.7347053Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7347247Z               "line": 610
2026-06-22T01:08:01.7347380Z             },
2026-06-22T01:08:01.7347543Z             {
2026-06-22T01:08:01.7347743Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7347943Z               "line": 89
2026-06-22T01:08:01.7348125Z             },
2026-06-22T01:08:01.7348257Z             {
2026-06-22T01:08:01.7348458Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7348606Z               "line": 1957
2026-06-22T01:08:01.7348801Z             }
2026-06-22T01:08:01.7349065Z           ]
2026-06-22T01:08:01.7349197Z         },
2026-06-22T01:08:01.7349394Z         "int": {
2026-06-22T01:08:01.7349550Z           "complete": false,
2026-06-22T01:08:01.7349751Z           "evidence": []
2026-06-22T01:08:01.7349930Z         },
2026-06-22T01:08:01.7350063Z         "unit": {
2026-06-22T01:08:01.7350228Z           "complete": true,
2026-06-22T01:08:01.7350382Z           "evidence": [
2026-06-22T01:08:01.7350567Z             {
2026-06-22T01:08:01.7350758Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7350935Z               "line": 314
2026-06-22T01:08:01.7351115Z             },
2026-06-22T01:08:01.7351249Z             {
2026-06-22T01:08:01.7351464Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7351622Z               "line": 8102
2026-06-22T01:08:01.7351793Z             }
2026-06-22T01:08:01.7351923Z           ]
2026-06-22T01:08:01.7352093Z         }
2026-06-22T01:08:01.7352284Z       }
2026-06-22T01:08:01.7352430Z     },
2026-06-22T01:08:01.7352597Z     {
2026-06-22T01:08:01.7352752Z       "id": "REQ-DAEMON-8",
2026-06-22T01:08:01.7353826Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-22T01:08:01.7354035Z       "requiredStages": [
2026-06-22T01:08:01.7354184Z         "impl",
2026-06-22T01:08:01.7354350Z         "unit"
2026-06-22T01:08:01.7354479Z       ],
2026-06-22T01:08:01.7354651Z       "stages": {
2026-06-22T01:08:01.7354842Z         "doc": {
2026-06-22T01:08:01.7355012Z           "complete": false,
2026-06-22T01:08:01.7355194Z           "evidence": []
2026-06-22T01:08:01.7355326Z         },
2026-06-22T01:08:01.7355494Z         "impl": {
2026-06-22T01:08:01.7355626Z           "complete": true,
2026-06-22T01:08:01.7355851Z           "evidence": [
2026-06-22T01:08:01.7356027Z             {
2026-06-22T01:08:01.7356209Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7356385Z               "line": 445
2026-06-22T01:08:01.7363480Z             },
2026-06-22T01:08:01.7363622Z             {
2026-06-22T01:08:01.7363795Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7363927Z               "line": 56
2026-06-22T01:08:01.7364023Z             }
2026-06-22T01:08:01.7364123Z           ]
2026-06-22T01:08:01.7364224Z         },
2026-06-22T01:08:01.7364333Z         "int": {
2026-06-22T01:08:01.7364452Z           "complete": false,
2026-06-22T01:08:01.7364571Z           "evidence": []
2026-06-22T01:08:01.7364834Z         },
2026-06-22T01:08:01.7364933Z         "unit": {
2026-06-22T01:08:01.7365049Z           "complete": true,
2026-06-22T01:08:01.7365158Z           "evidence": [
2026-06-22T01:08:01.7365272Z             {
2026-06-22T01:08:01.7365430Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7365544Z               "line": 288
2026-06-22T01:08:01.7365645Z             },
2026-06-22T01:08:01.7365754Z             {
2026-06-22T01:08:01.7365910Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T01:08:01.7366020Z               "line": 325
2026-06-22T01:08:01.7366125Z             }
2026-06-22T01:08:01.7366224Z           ]
2026-06-22T01:08:01.7366431Z         }
2026-06-22T01:08:01.7366539Z       }
2026-06-22T01:08:01.7366636Z     },
2026-06-22T01:08:01.7366740Z     {
2026-06-22T01:08:01.7366858Z       "id": "REQ-DAEMON-9",
2026-06-22T01:08:01.7369368Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-22T01:08:01.7369508Z       "requiredStages": [
2026-06-22T01:08:01.7369607Z         "impl",
2026-06-22T01:08:01.7369711Z         "unit"
2026-06-22T01:08:01.7369813Z       ],
2026-06-22T01:08:01.7369917Z       "stages": {
2026-06-22T01:08:01.7370017Z         "doc": {
2026-06-22T01:08:01.7370133Z           "complete": false,
2026-06-22T01:08:01.7370251Z           "evidence": []
2026-06-22T01:08:01.7370350Z         },
2026-06-22T01:08:01.7370448Z         "impl": {
2026-06-22T01:08:01.7370561Z           "complete": true,
2026-06-22T01:08:01.7370661Z           "evidence": [
2026-06-22T01:08:01.7370772Z             {
2026-06-22T01:08:01.7370932Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7371055Z               "line": 276
2026-06-22T01:08:01.7371151Z             },
2026-06-22T01:08:01.7371258Z             {
2026-06-22T01:08:01.7371411Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7371521Z               "line": 1308
2026-06-22T01:08:01.7371625Z             },
2026-06-22T01:08:01.7371726Z             {
2026-06-22T01:08:01.7371869Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7371988Z               "line": 197
2026-06-22T01:08:01.7372094Z             },
2026-06-22T01:08:01.7372198Z             {
2026-06-22T01:08:01.7372341Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7372465Z               "line": 344
2026-06-22T01:08:01.7372569Z             },
2026-06-22T01:08:01.7372670Z             {
2026-06-22T01:08:01.7372812Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7372922Z               "line": 381
2026-06-22T01:08:01.7373033Z             },
2026-06-22T01:08:01.7373137Z             {
2026-06-22T01:08:01.7373300Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7373414Z               "line": 2075
2026-06-22T01:08:01.7373518Z             }
2026-06-22T01:08:01.7373797Z           ]
2026-06-22T01:08:01.7374045Z         },
2026-06-22T01:08:01.7374249Z         "int": {
2026-06-22T01:08:01.7374483Z           "complete": false,
2026-06-22T01:08:01.7374731Z           "evidence": []
2026-06-22T01:08:01.7374966Z         },
2026-06-22T01:08:01.7375174Z         "unit": {
2026-06-22T01:08:01.7375399Z           "complete": true,
2026-06-22T01:08:01.7375647Z           "evidence": [
2026-06-22T01:08:01.7375995Z             {
2026-06-22T01:08:01.7376249Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7376542Z               "line": 1158
2026-06-22T01:08:01.7376780Z             },
2026-06-22T01:08:01.7376986Z             {
2026-06-22T01:08:01.7377229Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7377539Z               "line": 10580
2026-06-22T01:08:01.7377791Z             }
2026-06-22T01:08:01.7378001Z           ]
2026-06-22T01:08:01.7378202Z         }
2026-06-22T01:08:01.7378392Z       }
2026-06-22T01:08:01.7378582Z     },
2026-06-22T01:08:01.7378768Z     {
2026-06-22T01:08:01.7379051Z       "id": "REQ-DOCS-1",
2026-06-22T01:08:01.7379519Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-22T01:08:01.7379905Z       "requiredStages": [
2026-06-22T01:08:01.7380139Z         "doc",
2026-06-22T01:08:01.7380348Z         "impl"
2026-06-22T01:08:01.7380549Z       ],
2026-06-22T01:08:01.7380745Z       "stages": {
2026-06-22T01:08:01.7380973Z         "doc": {
2026-06-22T01:08:01.7381192Z           "complete": true,
2026-06-22T01:08:01.7381427Z           "evidence": [
2026-06-22T01:08:01.7381635Z             {
2026-06-22T01:08:01.7381885Z               "path": "docs-site/src/index.md",
2026-06-22T01:08:01.7382175Z               "line": 50
2026-06-22T01:08:01.7382405Z             }
2026-06-22T01:08:01.7382601Z           ]
2026-06-22T01:08:01.7382805Z         },
2026-06-22T01:08:01.7383011Z         "impl": {
2026-06-22T01:08:01.7383230Z           "complete": true,
2026-06-22T01:08:01.7383477Z           "evidence": [
2026-06-22T01:08:01.7383697Z             {
2026-06-22T01:08:01.7383961Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T01:08:01.7384268Z               "line": 12
2026-06-22T01:08:01.7384489Z             },
2026-06-22T01:08:01.7384690Z             {
2026-06-22T01:08:01.7384924Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.7385206Z               "line": 14
2026-06-22T01:08:01.7385434Z             }
2026-06-22T01:08:01.7385625Z           ]
2026-06-22T01:08:01.7385821Z         },
2026-06-22T01:08:01.7386025Z         "int": {
2026-06-22T01:08:01.7386264Z           "complete": false,
2026-06-22T01:08:01.7386513Z           "evidence": []
2026-06-22T01:08:01.7386732Z         },
2026-06-22T01:08:01.7386940Z         "unit": {
2026-06-22T01:08:01.7387165Z           "complete": false,
2026-06-22T01:08:01.7387417Z           "evidence": []
2026-06-22T01:08:01.7387669Z         }
2026-06-22T01:08:01.7387861Z       }
2026-06-22T01:08:01.7388056Z     },
2026-06-22T01:08:01.7388251Z     {
2026-06-22T01:08:01.7388462Z       "id": "REQ-DOCS-2",
2026-06-22T01:08:01.7388781Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-22T01:08:01.7389213Z       "requiredStages": [
2026-06-22T01:08:01.7389446Z         "doc",
2026-06-22T01:08:01.7389650Z         "int"
2026-06-22T01:08:01.7389850Z       ],
2026-06-22T01:08:01.7390051Z       "stages": {
2026-06-22T01:08:01.7390279Z         "doc": {
2026-06-22T01:08:01.7390498Z           "complete": true,
2026-06-22T01:08:01.7390737Z           "evidence": [
2026-06-22T01:08:01.7390943Z             {
2026-06-22T01:08:01.7391243Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-22T01:08:01.7391578Z               "line": 3
2026-06-22T01:08:01.7391791Z             },
2026-06-22T01:08:01.7391992Z             {
2026-06-22T01:08:01.7392243Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-22T01:08:01.7392531Z               "line": 3
2026-06-22T01:08:01.7392745Z             },
2026-06-22T01:08:01.7392947Z             {
2026-06-22T01:08:01.7393209Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T01:08:01.7393500Z               "line": 3
2026-06-22T01:08:01.7393723Z             }
2026-06-22T01:08:01.7393928Z           ]
2026-06-22T01:08:01.7394125Z         },
2026-06-22T01:08:01.7394343Z         "impl": {
2026-06-22T01:08:01.7394568Z           "complete": false,
2026-06-22T01:08:01.7394931Z           "evidence": []
2026-06-22T01:08:01.7395151Z         },
2026-06-22T01:08:01.7395350Z         "int": {
2026-06-22T01:08:01.7395570Z           "complete": true,
2026-06-22T01:08:01.7395809Z           "evidence": [
2026-06-22T01:08:01.7396038Z             {
2026-06-22T01:08:01.7396285Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:08:01.7396576Z               "line": 14
2026-06-22T01:08:01.7396805Z             }
2026-06-22T01:08:01.7397025Z           ]
2026-06-22T01:08:01.7397234Z         },
2026-06-22T01:08:01.7397430Z         "unit": {
2026-06-22T01:08:01.7397662Z           "complete": false,
2026-06-22T01:08:01.7398021Z           "evidence": []
2026-06-22T01:08:01.7398238Z         }
2026-06-22T01:08:01.7398431Z       }
2026-06-22T01:08:01.7398611Z     },
2026-06-22T01:08:01.7398849Z     {
2026-06-22T01:08:01.7399126Z       "id": "REQ-DOCS-3",
2026-06-22T01:08:01.7399508Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-22T01:08:01.7399854Z       "requiredStages": [
2026-06-22T01:08:01.7400091Z         "doc"
2026-06-22T01:08:01.7400297Z       ],
2026-06-22T01:08:01.7400496Z       "stages": {
2026-06-22T01:08:01.7400701Z         "doc": {
2026-06-22T01:08:01.7400926Z           "complete": true,
2026-06-22T01:08:01.7401164Z           "evidence": [
2026-06-22T01:08:01.7401383Z             {
2026-06-22T01:08:01.7401617Z               "path": "docs-site/src/index.md",
2026-06-22T01:08:01.7401894Z               "line": 42
2026-06-22T01:08:01.7402123Z             }
2026-06-22T01:08:01.7402327Z           ]
2026-06-22T01:08:01.7402519Z         },
2026-06-22T01:08:01.7402736Z         "impl": {
2026-06-22T01:08:01.7402958Z           "complete": false,
2026-06-22T01:08:01.7403206Z           "evidence": []
2026-06-22T01:08:01.7403431Z         },
2026-06-22T01:08:01.7403634Z         "int": {
2026-06-22T01:08:01.7403854Z           "complete": false,
2026-06-22T01:08:01.7404098Z           "evidence": []
2026-06-22T01:08:01.7404341Z         },
2026-06-22T01:08:01.7404545Z         "unit": {
2026-06-22T01:08:01.7404761Z           "complete": false,
2026-06-22T01:08:01.7405005Z           "evidence": []
2026-06-22T01:08:01.7405226Z         }
2026-06-22T01:08:01.7405426Z       }
2026-06-22T01:08:01.7405615Z     },
2026-06-22T01:08:01.7405807Z     {
2026-06-22T01:08:01.7406017Z       "id": "REQ-DOCS-4",
2026-06-22T01:08:01.7406360Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-22T01:08:01.7406740Z       "requiredStages": [
2026-06-22T01:08:01.7406970Z         "doc",
2026-06-22T01:08:01.7407174Z         "impl",
2026-06-22T01:08:01.7407389Z         "unit"
2026-06-22T01:08:01.7407600Z       ],
2026-06-22T01:08:01.7407804Z       "stages": {
2026-06-22T01:08:01.7408023Z         "doc": {
2026-06-22T01:08:01.7408237Z           "complete": true,
2026-06-22T01:08:01.7408475Z           "evidence": [
2026-06-22T01:08:01.7408685Z             {
2026-06-22T01:08:01.7408933Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-22T01:08:01.7409295Z               "line": 35
2026-06-22T01:08:01.7409525Z             }
2026-06-22T01:08:01.7409724Z           ]
2026-06-22T01:08:01.7409925Z         },
2026-06-22T01:08:01.7410131Z         "impl": {
2026-06-22T01:08:01.7410353Z           "complete": true,
2026-06-22T01:08:01.7410599Z           "evidence": [
2026-06-22T01:08:01.7410813Z             {
2026-06-22T01:08:01.7411071Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7411370Z               "line": 746
2026-06-22T01:08:01.7411604Z             },
2026-06-22T01:08:01.7411814Z             {
2026-06-22T01:08:01.7412044Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.7412334Z               "line": 15
2026-06-22T01:08:01.7412558Z             }
2026-06-22T01:08:01.7412759Z           ]
2026-06-22T01:08:01.7412954Z         },
2026-06-22T01:08:01.7413154Z         "int": {
2026-06-22T01:08:01.7413387Z           "complete": false,
2026-06-22T01:08:01.7413743Z           "evidence": []
2026-06-22T01:08:01.7413971Z         },
2026-06-22T01:08:01.7414171Z         "unit": {
2026-06-22T01:08:01.7414396Z           "complete": true,
2026-06-22T01:08:01.7414640Z           "evidence": [
2026-06-22T01:08:01.7414857Z             {
2026-06-22T01:08:01.7415110Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7415406Z               "line": 1682
2026-06-22T01:08:01.7415636Z             }
2026-06-22T01:08:01.7415834Z           ]
2026-06-22T01:08:01.7416024Z         }
2026-06-22T01:08:01.7416223Z       }
2026-06-22T01:08:01.7416428Z     },
2026-06-22T01:08:01.7416629Z     {
2026-06-22T01:08:01.7416838Z       "id": "REQ-DOCS-5",
2026-06-22T01:08:01.7417310Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-22T01:08:01.7417678Z       "requiredStages": [
2026-06-22T01:08:01.7417911Z         "impl",
2026-06-22T01:08:01.7418117Z         "int"
2026-06-22T01:08:01.7418316Z       ],
2026-06-22T01:08:01.7418523Z       "stages": {
2026-06-22T01:08:01.7418744Z         "doc": {
2026-06-22T01:08:01.7419040Z           "complete": false,
2026-06-22T01:08:01.7419274Z           "evidence": []
2026-06-22T01:08:01.7419498Z         },
2026-06-22T01:08:01.7419698Z         "impl": {
2026-06-22T01:08:01.7419913Z           "complete": true,
2026-06-22T01:08:01.7420156Z           "evidence": [
2026-06-22T01:08:01.7420372Z             {
2026-06-22T01:08:01.7420633Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7420941Z               "line": 747
2026-06-22T01:08:01.7421164Z             },
2026-06-22T01:08:01.7421364Z             {
2026-06-22T01:08:01.7421606Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.7421893Z               "line": 113
2026-06-22T01:08:01.7422118Z             }
2026-06-22T01:08:01.7422318Z           ]
2026-06-22T01:08:01.7422517Z         },
2026-06-22T01:08:01.7422727Z         "int": {
2026-06-22T01:08:01.7422948Z           "complete": true,
2026-06-22T01:08:01.7423180Z           "evidence": [
2026-06-22T01:08:01.7423399Z             {
2026-06-22T01:08:01.7423639Z               "path": ".github/workflows/ci.yml",
2026-06-22T01:08:01.7423923Z               "line": 211
2026-06-22T01:08:01.7424144Z             },
2026-06-22T01:08:01.7424346Z             {
2026-06-22T01:08:01.7424598Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.7424904Z               "line": 1719
2026-06-22T01:08:01.7425112Z             }
2026-06-22T01:08:01.7425318Z           ]
2026-06-22T01:08:01.7425515Z         },
2026-06-22T01:08:01.7425704Z         "unit": {
2026-06-22T01:08:01.7425942Z           "complete": false,
2026-06-22T01:08:01.7426205Z           "evidence": []
2026-06-22T01:08:01.7426432Z         }
2026-06-22T01:08:01.7426626Z       }
2026-06-22T01:08:01.7426821Z     },
2026-06-22T01:08:01.7427021Z     {
2026-06-22T01:08:01.7427232Z       "id": "REQ-DOCS-6",
2026-06-22T01:08:01.7427723Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-22T01:08:01.7428214Z       "requiredStages": [
2026-06-22T01:08:01.7428443Z         "impl",
2026-06-22T01:08:01.7428648Z         "unit",
2026-06-22T01:08:01.7428857Z         "int"
2026-06-22T01:08:01.7429129Z       ],
2026-06-22T01:08:01.7429328Z       "stages": {
2026-06-22T01:08:01.7429538Z         "doc": {
2026-06-22T01:08:01.7429763Z           "complete": true,
2026-06-22T01:08:01.7430001Z           "evidence": [
2026-06-22T01:08:01.7430219Z             {
2026-06-22T01:08:01.7430487Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T01:08:01.7430783Z               "line": 4
2026-06-22T01:08:01.7431017Z             }
2026-06-22T01:08:01.7431222Z           ]
2026-06-22T01:08:01.7431416Z         },
2026-06-22T01:08:01.7431626Z         "impl": {
2026-06-22T01:08:01.7431851Z           "complete": true,
2026-06-22T01:08:01.7432086Z           "evidence": [
2026-06-22T01:08:01.7432306Z             {
2026-06-22T01:08:01.7432653Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7432935Z               "line": 5240
2026-06-22T01:08:01.7433174Z             }
2026-06-22T01:08:01.7433373Z           ]
2026-06-22T01:08:01.7433570Z         },
2026-06-22T01:08:01.7433764Z         "int": {
2026-06-22T01:08:01.7433988Z           "complete": true,
2026-06-22T01:08:01.7434223Z           "evidence": [
2026-06-22T01:08:01.7434436Z             {
2026-06-22T01:08:01.7434676Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:08:01.7434962Z               "line": 39
2026-06-22T01:08:01.7435187Z             }
2026-06-22T01:08:01.7435392Z           ]
2026-06-22T01:08:01.7435687Z         },
2026-06-22T01:08:01.7435893Z         "unit": {
2026-06-22T01:08:01.7436113Z           "complete": true,
2026-06-22T01:08:01.7436341Z           "evidence": [
2026-06-22T01:08:01.7436564Z             {
2026-06-22T01:08:01.7436794Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7437078Z               "line": 10742
2026-06-22T01:08:01.7437290Z             }
2026-06-22T01:08:01.7437491Z           ]
2026-06-22T01:08:01.7437683Z         }
2026-06-22T01:08:01.7437882Z       }
2026-06-22T01:08:01.7438064Z     },
2026-06-22T01:08:01.7438259Z     {
2026-06-22T01:08:01.7438478Z       "id": "REQ-ELEVATE-1",
2026-06-22T01:08:01.7441873Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-22T01:08:01.7444867Z       "requiredStages": [
2026-06-22T01:08:01.7445096Z         "doc",
2026-06-22T01:08:01.7445308Z         "impl",
2026-06-22T01:08:01.7445518Z         "unit"
2026-06-22T01:08:01.7445724Z       ],
2026-06-22T01:08:01.7445928Z       "stages": {
2026-06-22T01:08:01.7446138Z         "doc": {
2026-06-22T01:08:01.7446377Z           "complete": true,
2026-06-22T01:08:01.7446620Z           "evidence": [
2026-06-22T01:08:01.7451465Z             {
2026-06-22T01:08:01.7451766Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.7452047Z               "line": 687
2026-06-22T01:08:01.7452289Z             }
2026-06-22T01:08:01.7452499Z           ]
2026-06-22T01:08:01.7452718Z         },
2026-06-22T01:08:01.7452910Z         "impl": {
2026-06-22T01:08:01.7453131Z           "complete": true,
2026-06-22T01:08:01.7453369Z           "evidence": [
2026-06-22T01:08:01.7453577Z             {
2026-06-22T01:08:01.7453826Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7454117Z               "line": 3572
2026-06-22T01:08:01.7454342Z             },
2026-06-22T01:08:01.7454541Z             {
2026-06-22T01:08:01.7454765Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7455038Z               "line": 3617
2026-06-22T01:08:01.7455248Z             },
2026-06-22T01:08:01.7455446Z             {
2026-06-22T01:08:01.7455679Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7455955Z               "line": 3679
2026-06-22T01:08:01.7456182Z             },
2026-06-22T01:08:01.7456384Z             {
2026-06-22T01:08:01.7456627Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.7456913Z               "line": 92
2026-06-22T01:08:01.7457271Z             },
2026-06-22T01:08:01.7457466Z             {
2026-06-22T01:08:01.7457685Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.7457956Z               "line": 148
2026-06-22T01:08:01.7458185Z             }
2026-06-22T01:08:01.7458382Z           ]
2026-06-22T01:08:01.7458575Z         },
2026-06-22T01:08:01.7458769Z         "int": {
2026-06-22T01:08:01.7459054Z           "complete": false,
2026-06-22T01:08:01.7459297Z           "evidence": []
2026-06-22T01:08:01.7459513Z         },
2026-06-22T01:08:01.7459698Z         "unit": {
2026-06-22T01:08:01.7459946Z           "complete": true,
2026-06-22T01:08:01.7460304Z           "evidence": [
2026-06-22T01:08:01.7460518Z             {
2026-06-22T01:08:01.7460759Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.7461043Z               "line": 442
2026-06-22T01:08:01.7461261Z             },
2026-06-22T01:08:01.7461467Z             {
2026-06-22T01:08:01.7461701Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.7461982Z               "line": 460
2026-06-22T01:08:01.7462205Z             }
2026-06-22T01:08:01.7462406Z           ]
2026-06-22T01:08:01.7462597Z         }
2026-06-22T01:08:01.7462792Z       }
2026-06-22T01:08:01.7462980Z     },
2026-06-22T01:08:01.7463177Z     {
2026-06-22T01:08:01.7463400Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-22T01:08:01.7465411Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-22T01:08:01.7467087Z       "requiredStages": [
2026-06-22T01:08:01.7467324Z         "doc",
2026-06-22T01:08:01.7467535Z         "impl",
2026-06-22T01:08:01.7467741Z         "unit"
2026-06-22T01:08:01.7467940Z       ],
2026-06-22T01:08:01.7468127Z       "stages": {
2026-06-22T01:08:01.7468336Z         "doc": {
2026-06-22T01:08:01.7468559Z           "complete": true,
2026-06-22T01:08:01.7468792Z           "evidence": [
2026-06-22T01:08:01.7469067Z             {
2026-06-22T01:08:01.7469290Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.7469543Z               "line": 711
2026-06-22T01:08:01.7469763Z             }
2026-06-22T01:08:01.7469992Z           ]
2026-06-22T01:08:01.7470187Z         },
2026-06-22T01:08:01.7470379Z         "impl": {
2026-06-22T01:08:01.7470603Z           "complete": true,
2026-06-22T01:08:01.7470830Z           "evidence": [
2026-06-22T01:08:01.7471046Z             {
2026-06-22T01:08:01.7471280Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7471569Z               "line": 1721
2026-06-22T01:08:01.7471788Z             },
2026-06-22T01:08:01.7471989Z             {
2026-06-22T01:08:01.7472218Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7472484Z               "line": 3125
2026-06-22T01:08:01.7472704Z             },
2026-06-22T01:08:01.7472906Z             {
2026-06-22T01:08:01.7473138Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7473395Z               "line": 3134
2026-06-22T01:08:01.7473614Z             }
2026-06-22T01:08:01.7473809Z           ]
2026-06-22T01:08:01.7474026Z         },
2026-06-22T01:08:01.7474218Z         "int": {
2026-06-22T01:08:01.7474450Z           "complete": false,
2026-06-22T01:08:01.7474679Z           "evidence": []
2026-06-22T01:08:01.7474890Z         },
2026-06-22T01:08:01.7475085Z         "unit": {
2026-06-22T01:08:01.7475299Z           "complete": true,
2026-06-22T01:08:01.7475528Z           "evidence": [
2026-06-22T01:08:01.7475739Z             {
2026-06-22T01:08:01.7476063Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7476335Z               "line": 7950
2026-06-22T01:08:01.7476557Z             },
2026-06-22T01:08:01.7476748Z             {
2026-06-22T01:08:01.7476979Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7477250Z               "line": 7991
2026-06-22T01:08:01.7477466Z             }
2026-06-22T01:08:01.7477662Z           ]
2026-06-22T01:08:01.7477851Z         }
2026-06-22T01:08:01.7478043Z       }
2026-06-22T01:08:01.7478233Z     },
2026-06-22T01:08:01.7478429Z     {
2026-06-22T01:08:01.7478635Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-22T01:08:01.7483636Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-22T01:08:01.7487912Z       "requiredStages": [
2026-06-22T01:08:01.7488153Z         "doc",
2026-06-22T01:08:01.7488365Z         "impl",
2026-06-22T01:08:01.7488580Z         "unit",
2026-06-22T01:08:01.7488788Z         "int"
2026-06-22T01:08:01.7489271Z       ],
2026-06-22T01:08:01.7489452Z       "stages": {
2026-06-22T01:08:01.7489651Z         "doc": {
2026-06-22T01:08:01.7489874Z           "complete": true,
2026-06-22T01:08:01.7490120Z           "evidence": [
2026-06-22T01:08:01.7490363Z             {
2026-06-22T01:08:01.7490578Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.7490836Z               "line": 163
2026-06-22T01:08:01.7491060Z             }
2026-06-22T01:08:01.7491250Z           ]
2026-06-22T01:08:01.7491447Z         },
2026-06-22T01:08:01.7491646Z         "impl": {
2026-06-22T01:08:01.7491880Z           "complete": true,
2026-06-22T01:08:01.7492110Z           "evidence": [
2026-06-22T01:08:01.7492329Z             {
2026-06-22T01:08:01.7492575Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.7492871Z               "line": 105
2026-06-22T01:08:01.7493091Z             },
2026-06-22T01:08:01.7493290Z             {
2026-06-22T01:08:01.7493524Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7493805Z               "line": 7219
2026-06-22T01:08:01.7494035Z             }
2026-06-22T01:08:01.7494224Z           ]
2026-06-22T01:08:01.7494420Z         },
2026-06-22T01:08:01.7494607Z         "int": {
2026-06-22T01:08:01.7494834Z           "complete": true,
2026-06-22T01:08:01.7495071Z           "evidence": [
2026-06-22T01:08:01.7495280Z             {
2026-06-22T01:08:01.7495513Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7495785Z               "line": 7384
2026-06-22T01:08:01.7496005Z             }
2026-06-22T01:08:01.7496206Z           ]
2026-06-22T01:08:01.7496505Z         },
2026-06-22T01:08:01.7496706Z         "unit": {
2026-06-22T01:08:01.7496931Z           "complete": true,
2026-06-22T01:08:01.7497150Z           "evidence": [
2026-06-22T01:08:01.7497359Z             {
2026-06-22T01:08:01.7497588Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7497854Z               "line": 7355
2026-06-22T01:08:01.7498066Z             }
2026-06-22T01:08:01.7498267Z           ]
2026-06-22T01:08:01.7498462Z         }
2026-06-22T01:08:01.7498647Z       }
2026-06-22T01:08:01.7498839Z     },
2026-06-22T01:08:01.7499096Z     {
2026-06-22T01:08:01.7499315Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-22T01:08:01.7500942Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-22T01:08:01.7502192Z       "requiredStages": [
2026-06-22T01:08:01.7502421Z         "impl",
2026-06-22T01:08:01.7502622Z         "unit"
2026-06-22T01:08:01.7502826Z       ],
2026-06-22T01:08:01.7503022Z       "stages": {
2026-06-22T01:08:01.7503240Z         "doc": {
2026-06-22T01:08:01.7503464Z           "complete": false,
2026-06-22T01:08:01.7503708Z           "evidence": []
2026-06-22T01:08:01.7503927Z         },
2026-06-22T01:08:01.7504126Z         "impl": {
2026-06-22T01:08:01.7504356Z           "complete": true,
2026-06-22T01:08:01.7504600Z           "evidence": [
2026-06-22T01:08:01.7504814Z             {
2026-06-22T01:08:01.7505047Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7505328Z               "line": 3165
2026-06-22T01:08:01.7505551Z             }
2026-06-22T01:08:01.7505749Z           ]
2026-06-22T01:08:01.7505937Z         },
2026-06-22T01:08:01.7506160Z         "int": {
2026-06-22T01:08:01.7506378Z           "complete": false,
2026-06-22T01:08:01.7506613Z           "evidence": []
2026-06-22T01:08:01.7506833Z         },
2026-06-22T01:08:01.7507032Z         "unit": {
2026-06-22T01:08:01.7507257Z           "complete": true,
2026-06-22T01:08:01.7507491Z           "evidence": [
2026-06-22T01:08:01.7507710Z             {
2026-06-22T01:08:01.7507938Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7508209Z               "line": 7331
2026-06-22T01:08:01.7508443Z             }
2026-06-22T01:08:01.7508645Z           ]
2026-06-22T01:08:01.7508832Z         }
2026-06-22T01:08:01.7509089Z       }
2026-06-22T01:08:01.7509274Z     },
2026-06-22T01:08:01.7509466Z     {
2026-06-22T01:08:01.7509671Z       "id": "REQ-EP-1",
2026-06-22T01:08:01.7509952Z       "title": "Day-one endpoint types; open type system",
2026-06-22T01:08:01.7510257Z       "requiredStages": [
2026-06-22T01:08:01.7510486Z         "impl",
2026-06-22T01:08:01.7510697Z         "unit"
2026-06-22T01:08:01.7510899Z       ],
2026-06-22T01:08:01.7511102Z       "stages": {
2026-06-22T01:08:01.7511308Z         "doc": {
2026-06-22T01:08:01.7511531Z           "complete": false,
2026-06-22T01:08:01.7511774Z           "evidence": []
2026-06-22T01:08:01.7511994Z         },
2026-06-22T01:08:01.7512185Z         "impl": {
2026-06-22T01:08:01.7512404Z           "complete": true,
2026-06-22T01:08:01.7512638Z           "evidence": [
2026-06-22T01:08:01.7512858Z             {
2026-06-22T01:08:01.7513124Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7513410Z               "line": 77
2026-06-22T01:08:01.7513624Z             },
2026-06-22T01:08:01.7513834Z             {
2026-06-22T01:08:01.7514091Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7514377Z               "line": 94
2026-06-22T01:08:01.7514597Z             }
2026-06-22T01:08:01.7514783Z           ]
2026-06-22T01:08:01.7514973Z         },
2026-06-22T01:08:01.7515078Z         "int": {
2026-06-22T01:08:01.7515297Z           "complete": false,
2026-06-22T01:08:01.7515398Z           "evidence": []
2026-06-22T01:08:01.7515503Z         },
2026-06-22T01:08:01.7515607Z         "unit": {
2026-06-22T01:08:01.7515722Z           "complete": true,
2026-06-22T01:08:01.7515827Z           "evidence": [
2026-06-22T01:08:01.7515926Z             {
2026-06-22T01:08:01.7516079Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7516191Z               "line": 161
2026-06-22T01:08:01.7516295Z             },
2026-06-22T01:08:01.7516396Z             {
2026-06-22T01:08:01.7516544Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7516768Z               "line": 178
2026-06-22T01:08:01.7516863Z             }
2026-06-22T01:08:01.7516972Z           ]
2026-06-22T01:08:01.7517069Z         }
2026-06-22T01:08:01.7517173Z       }
2026-06-22T01:08:01.7517258Z     },
2026-06-22T01:08:01.7517364Z     {
2026-06-22T01:08:01.7517468Z       "id": "REQ-EP-2",
2026-06-22T01:08:01.7517660Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-22T01:08:01.7517779Z       "requiredStages": [
2026-06-22T01:08:01.7517883Z         "impl",
2026-06-22T01:08:01.7517989Z         "unit"
2026-06-22T01:08:01.7518093Z       ],
2026-06-22T01:08:01.7518198Z       "stages": {
2026-06-22T01:08:01.7518300Z         "doc": {
2026-06-22T01:08:01.7518417Z           "complete": false,
2026-06-22T01:08:01.7518527Z           "evidence": []
2026-06-22T01:08:01.7518629Z         },
2026-06-22T01:08:01.7518737Z         "impl": {
2026-06-22T01:08:01.7518850Z           "complete": true,
2026-06-22T01:08:01.7519026Z           "evidence": [
2026-06-22T01:08:01.7519138Z             {
2026-06-22T01:08:01.7519272Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7519388Z               "line": 114
2026-06-22T01:08:01.7519491Z             },
2026-06-22T01:08:01.7519592Z             {
2026-06-22T01:08:01.7519731Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7519849Z               "line": 131
2026-06-22T01:08:01.7519955Z             },
2026-06-22T01:08:01.7520055Z             {
2026-06-22T01:08:01.7520202Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7520308Z               "line": 138
2026-06-22T01:08:01.7520416Z             }
2026-06-22T01:08:01.7520502Z           ]
2026-06-22T01:08:01.7520613Z         },
2026-06-22T01:08:01.7520722Z         "int": {
2026-06-22T01:08:01.7520837Z           "complete": false,
2026-06-22T01:08:01.7520956Z           "evidence": []
2026-06-22T01:08:01.7521056Z         },
2026-06-22T01:08:01.7521162Z         "unit": {
2026-06-22T01:08:01.7521285Z           "complete": true,
2026-06-22T01:08:01.7521393Z           "evidence": [
2026-06-22T01:08:01.7521493Z             {
2026-06-22T01:08:01.7521630Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7521739Z               "line": 190
2026-06-22T01:08:01.7521839Z             },
2026-06-22T01:08:01.7521950Z             {
2026-06-22T01:08:01.7522096Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7522207Z               "line": 208
2026-06-22T01:08:01.7522315Z             },
2026-06-22T01:08:01.7522410Z             {
2026-06-22T01:08:01.7522564Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T01:08:01.7522673Z               "line": 221
2026-06-22T01:08:01.7522779Z             }
2026-06-22T01:08:01.7522874Z           ]
2026-06-22T01:08:01.7522978Z         }
2026-06-22T01:08:01.7523079Z       }
2026-06-22T01:08:01.7523179Z     },
2026-06-22T01:08:01.7523284Z     {
2026-06-22T01:08:01.7523389Z       "id": "REQ-EP-3",
2026-06-22T01:08:01.7523608Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-22T01:08:01.7523719Z       "requiredStages": [
2026-06-22T01:08:01.7523818Z         "impl",
2026-06-22T01:08:01.7523913Z         "unit"
2026-06-22T01:08:01.7524019Z       ],
2026-06-22T01:08:01.7524129Z       "stages": {
2026-06-22T01:08:01.7524336Z         "doc": {
2026-06-22T01:08:01.7524456Z           "complete": false,
2026-06-22T01:08:01.7524561Z           "evidence": []
2026-06-22T01:08:01.7524660Z         },
2026-06-22T01:08:01.7524776Z         "impl": {
2026-06-22T01:08:01.7524884Z           "complete": true,
2026-06-22T01:08:01.7524990Z           "evidence": [
2026-06-22T01:08:01.7525090Z             {
2026-06-22T01:08:01.7525233Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7525343Z               "line": 31
2026-06-22T01:08:01.7525453Z             },
2026-06-22T01:08:01.7525557Z             {
2026-06-22T01:08:01.7525706Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7525919Z               "line": 49
2026-06-22T01:08:01.7526026Z             }
2026-06-22T01:08:01.7526129Z           ]
2026-06-22T01:08:01.7526215Z         },
2026-06-22T01:08:01.7526331Z         "int": {
2026-06-22T01:08:01.7526453Z           "complete": false,
2026-06-22T01:08:01.7526567Z           "evidence": []
2026-06-22T01:08:01.7526672Z         },
2026-06-22T01:08:01.7526775Z         "unit": {
2026-06-22T01:08:01.7526898Z           "complete": true,
2026-06-22T01:08:01.7527004Z           "evidence": [
2026-06-22T01:08:01.7527104Z             {
2026-06-22T01:08:01.7527251Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7527357Z               "line": 156
2026-06-22T01:08:01.7527466Z             },
2026-06-22T01:08:01.7527566Z             {
2026-06-22T01:08:01.7527709Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7527823Z               "line": 164
2026-06-22T01:08:01.7527929Z             },
2026-06-22T01:08:01.7528038Z             {
2026-06-22T01:08:01.7528181Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7528301Z               "line": 177
2026-06-22T01:08:01.7528400Z             },
2026-06-22T01:08:01.7528506Z             {
2026-06-22T01:08:01.7528648Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7528768Z               "line": 200
2026-06-22T01:08:01.7528874Z             },
2026-06-22T01:08:01.7529039Z             {
2026-06-22T01:08:01.7529184Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7529292Z               "line": 216
2026-06-22T01:08:01.7529396Z             },
2026-06-22T01:08:01.7529501Z             {
2026-06-22T01:08:01.7529651Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T01:08:01.7529765Z               "line": 233
2026-06-22T01:08:01.7529866Z             }
2026-06-22T01:08:01.7529971Z           ]
2026-06-22T01:08:01.7530070Z         }
2026-06-22T01:08:01.7530172Z       }
2026-06-22T01:08:01.7530272Z     },
2026-06-22T01:08:01.7530375Z     {
2026-06-22T01:08:01.7530496Z       "id": "REQ-EP-4",
2026-06-22T01:08:01.7530676Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-22T01:08:01.7530801Z       "requiredStages": [
2026-06-22T01:08:01.7530905Z         "impl",
2026-06-22T01:08:01.7531014Z         "unit"
2026-06-22T01:08:01.7531116Z       ],
2026-06-22T01:08:01.7531225Z       "stages": {
2026-06-22T01:08:01.7531324Z         "doc": {
2026-06-22T01:08:01.7531445Z           "complete": false,
2026-06-22T01:08:01.7531558Z           "evidence": []
2026-06-22T01:08:01.7531658Z         },
2026-06-22T01:08:01.7531760Z         "impl": {
2026-06-22T01:08:01.7531873Z           "complete": true,
2026-06-22T01:08:01.7531991Z           "evidence": [
2026-06-22T01:08:01.7532091Z             {
2026-06-22T01:08:01.7532237Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7532341Z               "line": 778
2026-06-22T01:08:01.7532448Z             },
2026-06-22T01:08:01.7532556Z             {
2026-06-22T01:08:01.7532700Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7532814Z               "line": 1221
2026-06-22T01:08:01.7532918Z             },
2026-06-22T01:08:01.7533020Z             {
2026-06-22T01:08:01.7533172Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7533397Z               "line": 2421
2026-06-22T01:08:01.7533496Z             },
2026-06-22T01:08:01.7533601Z             {
2026-06-22T01:08:01.7533749Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7533863Z               "line": 125
2026-06-22T01:08:01.7533969Z             },
2026-06-22T01:08:01.7534083Z             {
2026-06-22T01:08:01.7534211Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7534322Z               "line": 715
2026-06-22T01:08:01.7534416Z             },
2026-06-22T01:08:01.7534516Z             {
2026-06-22T01:08:01.7534656Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7534863Z               "line": 864
2026-06-22T01:08:01.7534968Z             },
2026-06-22T01:08:01.7535069Z             {
2026-06-22T01:08:01.7535216Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7535326Z               "line": 321
2026-06-22T01:08:01.7535435Z             },
2026-06-22T01:08:01.7535545Z             {
2026-06-22T01:08:01.7535684Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7535807Z               "line": 508
2026-06-22T01:08:01.7535908Z             },
2026-06-22T01:08:01.7536013Z             {
2026-06-22T01:08:01.7536155Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7536262Z               "line": 1334
2026-06-22T01:08:01.7536356Z             }
2026-06-22T01:08:01.7536456Z           ]
2026-06-22T01:08:01.7536557Z         },
2026-06-22T01:08:01.7536665Z         "int": {
2026-06-22T01:08:01.7536785Z           "complete": false,
2026-06-22T01:08:01.7536901Z           "evidence": []
2026-06-22T01:08:01.7537008Z         },
2026-06-22T01:08:01.7537113Z         "unit": {
2026-06-22T01:08:01.7537223Z           "complete": true,
2026-06-22T01:08:01.7537335Z           "evidence": [
2026-06-22T01:08:01.7537439Z             {
2026-06-22T01:08:01.7537583Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7537702Z               "line": 955
2026-06-22T01:08:01.7537793Z             },
2026-06-22T01:08:01.7537903Z             {
2026-06-22T01:08:01.7538050Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T01:08:01.7538161Z               "line": 76
2026-06-22T01:08:01.7538265Z             },
2026-06-22T01:08:01.7538364Z             {
2026-06-22T01:08:01.7538522Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T01:08:01.7538627Z               "line": 147
2026-06-22T01:08:01.7538736Z             }
2026-06-22T01:08:01.7538837Z           ]
2026-06-22T01:08:01.7539004Z         }
2026-06-22T01:08:01.7539100Z       }
2026-06-22T01:08:01.7539204Z     },
2026-06-22T01:08:01.7539309Z     {
2026-06-22T01:08:01.7539420Z       "id": "REQ-EP-5",
2026-06-22T01:08:01.7540118Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-22T01:08:01.7540235Z       "requiredStages": [
2026-06-22T01:08:01.7540340Z         "impl",
2026-06-22T01:08:01.7540451Z         "unit",
2026-06-22T01:08:01.7540555Z         "int"
2026-06-22T01:08:01.7540659Z       ],
2026-06-22T01:08:01.7540760Z       "stages": {
2026-06-22T01:08:01.7540865Z         "doc": {
2026-06-22T01:08:01.7544238Z           "complete": false,
2026-06-22T01:08:01.7544385Z           "evidence": []
2026-06-22T01:08:01.7544490Z         },
2026-06-22T01:08:01.7544605Z         "impl": {
2026-06-22T01:08:01.7544729Z           "complete": true,
2026-06-22T01:08:01.7544834Z           "evidence": [
2026-06-22T01:08:01.7544944Z             {
2026-06-22T01:08:01.7545115Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.7545225Z               "line": 367
2026-06-22T01:08:01.7545329Z             },
2026-06-22T01:08:01.7545437Z             {
2026-06-22T01:08:01.7545591Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7545848Z               "line": 18
2026-06-22T01:08:01.7545949Z             },
2026-06-22T01:08:01.7546048Z             {
2026-06-22T01:08:01.7546202Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7546315Z               "line": 63
2026-06-22T01:08:01.7546415Z             },
2026-06-22T01:08:01.7546516Z             {
2026-06-22T01:08:01.7546663Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7546774Z               "line": 92
2026-06-22T01:08:01.7546873Z             },
2026-06-22T01:08:01.7546978Z             {
2026-06-22T01:08:01.7547127Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7547330Z               "line": 167
2026-06-22T01:08:01.7547437Z             },
2026-06-22T01:08:01.7547540Z             {
2026-06-22T01:08:01.7547691Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7547802Z               "line": 179
2026-06-22T01:08:01.7547909Z             },
2026-06-22T01:08:01.7548013Z             {
2026-06-22T01:08:01.7548168Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.7548286Z               "line": 114
2026-06-22T01:08:01.7548386Z             },
2026-06-22T01:08:01.7548486Z             {
2026-06-22T01:08:01.7548629Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7548745Z               "line": 22
2026-06-22T01:08:01.7548849Z             },
2026-06-22T01:08:01.7549016Z             {
2026-06-22T01:08:01.7549168Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7549277Z               "line": 145
2026-06-22T01:08:01.7549379Z             },
2026-06-22T01:08:01.7549478Z             {
2026-06-22T01:08:01.7549626Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7549731Z               "line": 174
2026-06-22T01:08:01.7549835Z             },
2026-06-22T01:08:01.7549931Z             {
2026-06-22T01:08:01.7550074Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7550188Z               "line": 196
2026-06-22T01:08:01.7550289Z             },
2026-06-22T01:08:01.7550398Z             {
2026-06-22T01:08:01.7550544Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7550645Z               "line": 221
2026-06-22T01:08:01.7550748Z             },
2026-06-22T01:08:01.7550852Z             {
2026-06-22T01:08:01.7551001Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7551110Z               "line": 247
2026-06-22T01:08:01.7551219Z             },
2026-06-22T01:08:01.7551320Z             {
2026-06-22T01:08:01.7551458Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7551568Z               "line": 270
2026-06-22T01:08:01.7551673Z             },
2026-06-22T01:08:01.7551772Z             {
2026-06-22T01:08:01.7551927Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.7552040Z               "line": 104
2026-06-22T01:08:01.7552149Z             },
2026-06-22T01:08:01.7552237Z             {
2026-06-22T01:08:01.7552383Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7552488Z               "line": 6068
2026-06-22T01:08:01.7552594Z             },
2026-06-22T01:08:01.7552698Z             {
2026-06-22T01:08:01.7552828Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7552937Z               "line": 6202
2026-06-22T01:08:01.7553031Z             },
2026-06-22T01:08:01.7553135Z             {
2026-06-22T01:08:01.7553264Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7553372Z               "line": 6368
2026-06-22T01:08:01.7553481Z             },
2026-06-22T01:08:01.7553582Z             {
2026-06-22T01:08:01.7553714Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7553820Z               "line": 6896
2026-06-22T01:08:01.7553930Z             }
2026-06-22T01:08:01.7554029Z           ]
2026-06-22T01:08:01.7554140Z         },
2026-06-22T01:08:01.7554363Z         "int": {
2026-06-22T01:08:01.7554474Z           "complete": true,
2026-06-22T01:08:01.7554583Z           "evidence": [
2026-06-22T01:08:01.7554683Z             {
2026-06-22T01:08:01.7554827Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T01:08:01.7554936Z               "line": 16
2026-06-22T01:08:01.7555040Z             },
2026-06-22T01:08:01.7555141Z             {
2026-06-22T01:08:01.7555279Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T01:08:01.7555380Z               "line": 15
2026-06-22T01:08:01.7555480Z             }
2026-06-22T01:08:01.7555583Z           ]
2026-06-22T01:08:01.7555685Z         },
2026-06-22T01:08:01.7555889Z         "unit": {
2026-06-22T01:08:01.7556012Z           "complete": true,
2026-06-22T01:08:01.7556123Z           "evidence": [
2026-06-22T01:08:01.7556227Z             {
2026-06-22T01:08:01.7556375Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7556484Z               "line": 246
2026-06-22T01:08:01.7556584Z             },
2026-06-22T01:08:01.7556680Z             {
2026-06-22T01:08:01.7556823Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7556927Z               "line": 306
2026-06-22T01:08:01.7557033Z             },
2026-06-22T01:08:01.7557133Z             {
2026-06-22T01:08:01.7557280Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T01:08:01.7557387Z               "line": 363
2026-06-22T01:08:01.7557490Z             },
2026-06-22T01:08:01.7557595Z             {
2026-06-22T01:08:01.7557734Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7557848Z               "line": 286
2026-06-22T01:08:01.7557943Z             },
2026-06-22T01:08:01.7558040Z             {
2026-06-22T01:08:01.7558190Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.7558300Z               "line": 338
2026-06-22T01:08:01.7558404Z             },
2026-06-22T01:08:01.7558503Z             {
2026-06-22T01:08:01.7558646Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.7558752Z               "line": 783
2026-06-22T01:08:01.7558850Z             },
2026-06-22T01:08:01.7559390Z             {
2026-06-22T01:08:01.7559532Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7559643Z               "line": 8751
2026-06-22T01:08:01.7559738Z             },
2026-06-22T01:08:01.7559838Z             {
2026-06-22T01:08:01.7559967Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7560072Z               "line": 8904
2026-06-22T01:08:01.7560176Z             },
2026-06-22T01:08:01.7560278Z             {
2026-06-22T01:08:01.7560405Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7560516Z               "line": 9493
2026-06-22T01:08:01.7560621Z             },
2026-06-22T01:08:01.7560720Z             {
2026-06-22T01:08:01.7560850Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7560963Z               "line": 9609
2026-06-22T01:08:01.7561058Z             }
2026-06-22T01:08:01.7561162Z           ]
2026-06-22T01:08:01.7561267Z         }
2026-06-22T01:08:01.7561370Z       }
2026-06-22T01:08:01.7561465Z     },
2026-06-22T01:08:01.7561571Z     {
2026-06-22T01:08:01.7561675Z       "id": "REQ-EP-6",
2026-06-22T01:08:01.7563192Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-22T01:08:01.7563330Z       "requiredStages": [
2026-06-22T01:08:01.7563436Z         "doc",
2026-06-22T01:08:01.7563535Z         "impl",
2026-06-22T01:08:01.7563638Z         "unit"
2026-06-22T01:08:01.7563738Z       ],
2026-06-22T01:08:01.7563969Z       "stages": {
2026-06-22T01:08:01.7564065Z         "doc": {
2026-06-22T01:08:01.7564209Z           "complete": true,
2026-06-22T01:08:01.7564322Z           "evidence": [
2026-06-22T01:08:01.7564419Z             {
2026-06-22T01:08:01.7564538Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.7564647Z               "line": 227
2026-06-22T01:08:01.7564748Z             }
2026-06-22T01:08:01.7564847Z           ]
2026-06-22T01:08:01.7564942Z         },
2026-06-22T01:08:01.7565039Z         "impl": {
2026-06-22T01:08:01.7565148Z           "complete": true,
2026-06-22T01:08:01.7565257Z           "evidence": [
2026-06-22T01:08:01.7565364Z             {
2026-06-22T01:08:01.7565610Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7565716Z               "line": 212
2026-06-22T01:08:01.7565820Z             }
2026-06-22T01:08:01.7565920Z           ]
2026-06-22T01:08:01.7566017Z         },
2026-06-22T01:08:01.7566125Z         "int": {
2026-06-22T01:08:01.7566230Z           "complete": true,
2026-06-22T01:08:01.7566336Z           "evidence": [
2026-06-22T01:08:01.7566449Z             {
2026-06-22T01:08:01.7566596Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T01:08:01.7566707Z               "line": 18
2026-06-22T01:08:01.7566811Z             }
2026-06-22T01:08:01.7566915Z           ]
2026-06-22T01:08:01.7567007Z         },
2026-06-22T01:08:01.7567116Z         "unit": {
2026-06-22T01:08:01.7567216Z           "complete": true,
2026-06-22T01:08:01.7567327Z           "evidence": [
2026-06-22T01:08:01.7567426Z             {
2026-06-22T01:08:01.7567579Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.7567698Z               "line": 556
2026-06-22T01:08:01.7567793Z             },
2026-06-22T01:08:01.7567894Z             {
2026-06-22T01:08:01.7568036Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7568150Z               "line": 904
2026-06-22T01:08:01.7568247Z             }
2026-06-22T01:08:01.7568351Z           ]
2026-06-22T01:08:01.7568455Z         }
2026-06-22T01:08:01.7568543Z       }
2026-06-22T01:08:01.7568643Z     },
2026-06-22T01:08:01.7568741Z     {
2026-06-22T01:08:01.7568855Z       "id": "REQ-EP-7",
2026-06-22T01:08:01.7570618Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-22T01:08:01.7570751Z       "requiredStages": [
2026-06-22T01:08:01.7570857Z         "doc",
2026-06-22T01:08:01.7570961Z         "impl",
2026-06-22T01:08:01.7571066Z         "unit"
2026-06-22T01:08:01.7571167Z       ],
2026-06-22T01:08:01.7571280Z       "stages": {
2026-06-22T01:08:01.7571386Z         "doc": {
2026-06-22T01:08:01.7571496Z           "complete": true,
2026-06-22T01:08:01.7571613Z           "evidence": [
2026-06-22T01:08:01.7571713Z             {
2026-06-22T01:08:01.7571841Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.7571944Z               "line": 490
2026-06-22T01:08:01.7572054Z             }
2026-06-22T01:08:01.7572155Z           ]
2026-06-22T01:08:01.7572254Z         },
2026-06-22T01:08:01.7572344Z         "impl": {
2026-06-22T01:08:01.7572450Z           "complete": true,
2026-06-22T01:08:01.7572554Z           "evidence": [
2026-06-22T01:08:01.7572654Z             {
2026-06-22T01:08:01.7572803Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.7572916Z               "line": 505
2026-06-22T01:08:01.7573018Z             },
2026-06-22T01:08:01.7573113Z             {
2026-06-22T01:08:01.7573260Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.7573362Z               "line": 87
2026-06-22T01:08:01.7573560Z             },
2026-06-22T01:08:01.7573662Z             {
2026-06-22T01:08:01.7573832Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.7573943Z               "line": 81
2026-06-22T01:08:01.7574048Z             },
2026-06-22T01:08:01.7574147Z             {
2026-06-22T01:08:01.7574308Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.7574416Z               "line": 166
2026-06-22T01:08:01.7574516Z             },
2026-06-22T01:08:01.7574616Z             {
2026-06-22T01:08:01.7574745Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7574863Z               "line": 1645
2026-06-22T01:08:01.7575060Z             }
2026-06-22T01:08:01.7575164Z           ]
2026-06-22T01:08:01.7575260Z         },
2026-06-22T01:08:01.7575370Z         "int": {
2026-06-22T01:08:01.7575493Z           "complete": false,
2026-06-22T01:08:01.7575599Z           "evidence": []
2026-06-22T01:08:01.7575708Z         },
2026-06-22T01:08:01.7575813Z         "unit": {
2026-06-22T01:08:01.7575933Z           "complete": true,
2026-06-22T01:08:01.7576047Z           "evidence": [
2026-06-22T01:08:01.7576151Z             {
2026-06-22T01:08:01.7576295Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.7576404Z               "line": 623
2026-06-22T01:08:01.7576505Z             },
2026-06-22T01:08:01.7576600Z             {
2026-06-22T01:08:01.7576743Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.7576848Z               "line": 212
2026-06-22T01:08:01.7576948Z             },
2026-06-22T01:08:01.7577052Z             {
2026-06-22T01:08:01.7577180Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.7577300Z               "line": 307
2026-06-22T01:08:01.7577399Z             },
2026-06-22T01:08:01.7577505Z             {
2026-06-22T01:08:01.7577634Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7577742Z               "line": 7724
2026-06-22T01:08:01.7577849Z             },
2026-06-22T01:08:01.7577948Z             {
2026-06-22T01:08:01.7578081Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7578187Z               "line": 7751
2026-06-22T01:08:01.7578286Z             }
2026-06-22T01:08:01.7578381Z           ]
2026-06-22T01:08:01.7578483Z         }
2026-06-22T01:08:01.7578587Z       }
2026-06-22T01:08:01.7578687Z     },
2026-06-22T01:08:01.7578784Z     {
2026-06-22T01:08:01.7578888Z       "id": "REQ-FRONT-1",
2026-06-22T01:08:01.7579160Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-22T01:08:01.7579277Z       "requiredStages": [],
2026-06-22T01:08:01.7579382Z       "stages": {
2026-06-22T01:08:01.7579492Z         "doc": {
2026-06-22T01:08:01.7579604Z           "complete": false,
2026-06-22T01:08:01.7579713Z           "evidence": []
2026-06-22T01:08:01.7579815Z         },
2026-06-22T01:08:01.7579919Z         "impl": {
2026-06-22T01:08:01.7580037Z           "complete": false,
2026-06-22T01:08:01.7580144Z           "evidence": []
2026-06-22T01:08:01.7580248Z         },
2026-06-22T01:08:01.7580343Z         "int": {
2026-06-22T01:08:01.7580463Z           "complete": false,
2026-06-22T01:08:01.7580567Z           "evidence": []
2026-06-22T01:08:01.7580672Z         },
2026-06-22T01:08:01.7580777Z         "unit": {
2026-06-22T01:08:01.7580887Z           "complete": false,
2026-06-22T01:08:01.7580991Z           "evidence": []
2026-06-22T01:08:01.7581092Z         }
2026-06-22T01:08:01.7581187Z       }
2026-06-22T01:08:01.7581287Z     },
2026-06-22T01:08:01.7581388Z     {
2026-06-22T01:08:01.7581516Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-22T01:08:01.7586945Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-22T01:08:01.7587322Z       "requiredStages": [
2026-06-22T01:08:01.7587418Z         "int"
2026-06-22T01:08:01.7587517Z       ],
2026-06-22T01:08:01.7587626Z       "stages": {
2026-06-22T01:08:01.7587731Z         "doc": {
2026-06-22T01:08:01.7587842Z           "complete": false,
2026-06-22T01:08:01.7587974Z           "evidence": []
2026-06-22T01:08:01.7588070Z         },
2026-06-22T01:08:01.7588175Z         "impl": {
2026-06-22T01:08:01.7588293Z           "complete": false,
2026-06-22T01:08:01.7588404Z           "evidence": []
2026-06-22T01:08:01.7588504Z         },
2026-06-22T01:08:01.7588603Z         "int": {
2026-06-22T01:08:01.7588719Z           "complete": true,
2026-06-22T01:08:01.7588847Z           "evidence": [
2026-06-22T01:08:01.7589048Z             {
2026-06-22T01:08:01.7589214Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T01:08:01.7589334Z               "line": 300
2026-06-22T01:08:01.7589429Z             }
2026-06-22T01:08:01.7589538Z           ]
2026-06-22T01:08:01.7589643Z         },
2026-06-22T01:08:01.7589748Z         "unit": {
2026-06-22T01:08:01.7589861Z           "complete": false,
2026-06-22T01:08:01.7589966Z           "evidence": []
2026-06-22T01:08:01.7590075Z         }
2026-06-22T01:08:01.7590169Z       }
2026-06-22T01:08:01.7590273Z     },
2026-06-22T01:08:01.7590365Z     {
2026-06-22T01:08:01.7590503Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-22T01:08:01.7593073Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-22T01:08:01.7593227Z       "requiredStages": [
2026-06-22T01:08:01.7593327Z         "impl",
2026-06-22T01:08:01.7593436Z         "unit",
2026-06-22T01:08:01.7593537Z         "int"
2026-06-22T01:08:01.7593642Z       ],
2026-06-22T01:08:01.7593746Z       "stages": {
2026-06-22T01:08:01.7593842Z         "doc": {
2026-06-22T01:08:01.7594099Z           "complete": false,
2026-06-22T01:08:01.7594205Z           "evidence": []
2026-06-22T01:08:01.7594310Z         },
2026-06-22T01:08:01.7594405Z         "impl": {
2026-06-22T01:08:01.7594524Z           "complete": true,
2026-06-22T01:08:01.7594638Z           "evidence": [
2026-06-22T01:08:01.7594748Z             {
2026-06-22T01:08:01.7594887Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7594991Z               "line": 257
2026-06-22T01:08:01.7595097Z             }
2026-06-22T01:08:01.7595197Z           ]
2026-06-22T01:08:01.7595300Z         },
2026-06-22T01:08:01.7595400Z         "int": {
2026-06-22T01:08:01.7595528Z           "complete": true,
2026-06-22T01:08:01.7595727Z           "evidence": [
2026-06-22T01:08:01.7595837Z             {
2026-06-22T01:08:01.7596003Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-22T01:08:01.7596109Z               "line": 93
2026-06-22T01:08:01.7596218Z             }
2026-06-22T01:08:01.7596318Z           ]
2026-06-22T01:08:01.7596429Z         },
2026-06-22T01:08:01.7596528Z         "unit": {
2026-06-22T01:08:01.7596647Z           "complete": true,
2026-06-22T01:08:01.7596758Z           "evidence": [
2026-06-22T01:08:01.7596862Z             {
2026-06-22T01:08:01.7597005Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7597101Z               "line": 802
2026-06-22T01:08:01.7597196Z             },
2026-06-22T01:08:01.7597295Z             {
2026-06-22T01:08:01.7597434Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7597543Z               "line": 824
2026-06-22T01:08:01.7597650Z             },
2026-06-22T01:08:01.7597749Z             {
2026-06-22T01:08:01.7597891Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7597998Z               "line": 855
2026-06-22T01:08:01.7598097Z             }
2026-06-22T01:08:01.7598201Z           ]
2026-06-22T01:08:01.7598300Z         }
2026-06-22T01:08:01.7598402Z       }
2026-06-22T01:08:01.7598500Z     },
2026-06-22T01:08:01.7598606Z     {
2026-06-22T01:08:01.7598740Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-22T01:08:01.7601297Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-22T01:08:01.7601434Z       "requiredStages": [
2026-06-22T01:08:01.7601550Z         "doc",
2026-06-22T01:08:01.7601649Z         "impl",
2026-06-22T01:08:01.7601744Z         "unit",
2026-06-22T01:08:01.7601855Z         "int"
2026-06-22T01:08:01.7601959Z       ],
2026-06-22T01:08:01.7602073Z       "stages": {
2026-06-22T01:08:01.7602179Z         "doc": {
2026-06-22T01:08:01.7602284Z           "complete": true,
2026-06-22T01:08:01.7602397Z           "evidence": [
2026-06-22T01:08:01.7602504Z             {
2026-06-22T01:08:01.7602636Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7602747Z               "line": 333
2026-06-22T01:08:01.7602852Z             }
2026-06-22T01:08:01.7602975Z           ]
2026-06-22T01:08:01.7603066Z         },
2026-06-22T01:08:01.7603181Z         "impl": {
2026-06-22T01:08:01.7603298Z           "complete": true,
2026-06-22T01:08:01.7603412Z           "evidence": [
2026-06-22T01:08:01.7603512Z             {
2026-06-22T01:08:01.7603681Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7603906Z               "line": 494
2026-06-22T01:08:01.7604006Z             },
2026-06-22T01:08:01.7604112Z             {
2026-06-22T01:08:01.7604259Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7604369Z               "line": 499
2026-06-22T01:08:01.7604474Z             },
2026-06-22T01:08:01.7604583Z             {
2026-06-22T01:08:01.7604736Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7604845Z               "line": 874
2026-06-22T01:08:01.7604945Z             },
2026-06-22T01:08:01.7605042Z             {
2026-06-22T01:08:01.7605193Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7605404Z               "line": 915
2026-06-22T01:08:01.7605503Z             },
2026-06-22T01:08:01.7605599Z             {
2026-06-22T01:08:01.7605748Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7605850Z               "line": 926
2026-06-22T01:08:01.7605955Z             },
2026-06-22T01:08:01.7606060Z             {
2026-06-22T01:08:01.7606215Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.7606325Z               "line": 358
2026-06-22T01:08:01.7606426Z             }
2026-06-22T01:08:01.7606529Z           ]
2026-06-22T01:08:01.7606631Z         },
2026-06-22T01:08:01.7606730Z         "int": {
2026-06-22T01:08:01.7606854Z           "complete": true,
2026-06-22T01:08:01.7606965Z           "evidence": [
2026-06-22T01:08:01.7607064Z             {
2026-06-22T01:08:01.7607231Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-22T01:08:01.7607341Z               "line": 30
2026-06-22T01:08:01.7607446Z             }
2026-06-22T01:08:01.7607545Z           ]
2026-06-22T01:08:01.7607647Z         },
2026-06-22T01:08:01.7607756Z         "unit": {
2026-06-22T01:08:01.7607870Z           "complete": true,
2026-06-22T01:08:01.7607976Z           "evidence": [
2026-06-22T01:08:01.7608075Z             {
2026-06-22T01:08:01.7608224Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7608333Z               "line": 1493
2026-06-22T01:08:01.7608437Z             },
2026-06-22T01:08:01.7608544Z             {
2026-06-22T01:08:01.7608690Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7608803Z               "line": 1518
2026-06-22T01:08:01.7608899Z             },
2026-06-22T01:08:01.7609065Z             {
2026-06-22T01:08:01.7609204Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7609329Z               "line": 1535
2026-06-22T01:08:01.7609433Z             },
2026-06-22T01:08:01.7609529Z             {
2026-06-22T01:08:01.7609685Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7609791Z               "line": 1578
2026-06-22T01:08:01.7609896Z             }
2026-06-22T01:08:01.7609996Z           ]
2026-06-22T01:08:01.7610091Z         }
2026-06-22T01:08:01.7610197Z       }
2026-06-22T01:08:01.7610296Z     },
2026-06-22T01:08:01.7610396Z     {
2026-06-22T01:08:01.7610563Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-22T01:08:01.7613153Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-22T01:08:01.7613402Z       "requiredStages": [],
2026-06-22T01:08:01.7613506Z       "stages": {
2026-06-22T01:08:01.7613607Z         "doc": {
2026-06-22T01:08:01.7613727Z           "complete": false,
2026-06-22T01:08:01.7613835Z           "evidence": []
2026-06-22T01:08:01.7613939Z         },
2026-06-22T01:08:01.7614049Z         "impl": {
2026-06-22T01:08:01.7614161Z           "complete": false,
2026-06-22T01:08:01.7614271Z           "evidence": []
2026-06-22T01:08:01.7614376Z         },
2026-06-22T01:08:01.7614485Z         "int": {
2026-06-22T01:08:01.7614600Z           "complete": false,
2026-06-22T01:08:01.7614710Z           "evidence": []
2026-06-22T01:08:01.7614924Z         },
2026-06-22T01:08:01.7615029Z         "unit": {
2026-06-22T01:08:01.7615138Z           "complete": false,
2026-06-22T01:08:01.7615258Z           "evidence": []
2026-06-22T01:08:01.7615358Z         }
2026-06-22T01:08:01.7615453Z       }
2026-06-22T01:08:01.7615563Z     },
2026-06-22T01:08:01.7615664Z     {
2026-06-22T01:08:01.7615825Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-22T01:08:01.7619616Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-22T01:08:01.7619789Z       "requiredStages": [
2026-06-22T01:08:01.7619889Z         "impl",
2026-06-22T01:08:01.7619988Z         "unit",
2026-06-22T01:08:01.7620084Z         "int"
2026-06-22T01:08:01.7620189Z       ],
2026-06-22T01:08:01.7620283Z       "stages": {
2026-06-22T01:08:01.7620418Z         "doc": {
2026-06-22T01:08:01.7620537Z           "complete": false,
2026-06-22T01:08:01.7620651Z           "evidence": []
2026-06-22T01:08:01.7620757Z         },
2026-06-22T01:08:01.7620861Z         "impl": {
2026-06-22T01:08:01.7620971Z           "complete": true,
2026-06-22T01:08:01.7621081Z           "evidence": [
2026-06-22T01:08:01.7621214Z             {
2026-06-22T01:08:01.7621372Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7621480Z               "line": 570
2026-06-22T01:08:01.7621580Z             },
2026-06-22T01:08:01.7621680Z             {
2026-06-22T01:08:01.7621830Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7621939Z               "line": 594
2026-06-22T01:08:01.7622045Z             },
2026-06-22T01:08:01.7622154Z             {
2026-06-22T01:08:01.7622298Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7622403Z               "line": 620
2026-06-22T01:08:01.7622507Z             },
2026-06-22T01:08:01.7622613Z             {
2026-06-22T01:08:01.7622761Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7622869Z               "line": 679
2026-06-22T01:08:01.7622976Z             },
2026-06-22T01:08:01.7623061Z             {
2026-06-22T01:08:01.7623203Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.7623428Z               "line": 89
2026-06-22T01:08:01.7623532Z             },
2026-06-22T01:08:01.7623634Z             {
2026-06-22T01:08:01.7623780Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.7623886Z               "line": 134
2026-06-22T01:08:01.7623986Z             }
2026-06-22T01:08:01.7624090Z           ]
2026-06-22T01:08:01.7624192Z         },
2026-06-22T01:08:01.7624315Z         "int": {
2026-06-22T01:08:01.7624433Z           "complete": true,
2026-06-22T01:08:01.7624542Z           "evidence": [
2026-06-22T01:08:01.7624646Z             {
2026-06-22T01:08:01.7624816Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-22T01:08:01.7625059Z               "line": 20
2026-06-22T01:08:01.7625160Z             }
2026-06-22T01:08:01.7625256Z           ]
2026-06-22T01:08:01.7625355Z         },
2026-06-22T01:08:01.7625465Z         "unit": {
2026-06-22T01:08:01.7625589Z           "complete": true,
2026-06-22T01:08:01.7625698Z           "evidence": [
2026-06-22T01:08:01.7625809Z             {
2026-06-22T01:08:01.7625956Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7626080Z               "line": 1047
2026-06-22T01:08:01.7626186Z             },
2026-06-22T01:08:01.7626285Z             {
2026-06-22T01:08:01.7626419Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.7626529Z               "line": 445
2026-06-22T01:08:01.7626623Z             }
2026-06-22T01:08:01.7626724Z           ]
2026-06-22T01:08:01.7626825Z         }
2026-06-22T01:08:01.7626919Z       }
2026-06-22T01:08:01.7627027Z     },
2026-06-22T01:08:01.7627133Z     {
2026-06-22T01:08:01.7627288Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-22T01:08:01.7630029Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-22T01:08:01.7630163Z       "requiredStages": [
2026-06-22T01:08:01.7630271Z         "doc",
2026-06-22T01:08:01.7630383Z         "impl",
2026-06-22T01:08:01.7630486Z         "unit",
2026-06-22T01:08:01.7630591Z         "int"
2026-06-22T01:08:01.7630692Z       ],
2026-06-22T01:08:01.7630797Z       "stages": {
2026-06-22T01:08:01.7630901Z         "doc": {
2026-06-22T01:08:01.7631016Z           "complete": true,
2026-06-22T01:08:01.7631144Z           "evidence": [
2026-06-22T01:08:01.7631250Z             {
2026-06-22T01:08:01.7631383Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7631487Z               "line": 302
2026-06-22T01:08:01.7631580Z             }
2026-06-22T01:08:01.7631689Z           ]
2026-06-22T01:08:01.7631788Z         },
2026-06-22T01:08:01.7631899Z         "impl": {
2026-06-22T01:08:01.7632017Z           "complete": true,
2026-06-22T01:08:01.7632126Z           "evidence": [
2026-06-22T01:08:01.7632231Z             {
2026-06-22T01:08:01.7632386Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.7632499Z               "line": 108
2026-06-22T01:08:01.7632606Z             },
2026-06-22T01:08:01.7632705Z             {
2026-06-22T01:08:01.7632853Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7632949Z               "line": 921
2026-06-22T01:08:01.7633057Z             },
2026-06-22T01:08:01.7633153Z             {
2026-06-22T01:08:01.7633410Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7633536Z               "line": 1137
2026-06-22T01:08:01.7633630Z             },
2026-06-22T01:08:01.7633730Z             {
2026-06-22T01:08:01.7633879Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7633993Z               "line": 23
2026-06-22T01:08:01.7634093Z             },
2026-06-22T01:08:01.7634194Z             {
2026-06-22T01:08:01.7634350Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7634452Z               "line": 113
2026-06-22T01:08:01.7634561Z             },
2026-06-22T01:08:01.7634660Z             {
2026-06-22T01:08:01.7634903Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7635017Z               "line": 158
2026-06-22T01:08:01.7635121Z             },
2026-06-22T01:08:01.7635216Z             {
2026-06-22T01:08:01.7635362Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7635473Z               "line": 218
2026-06-22T01:08:01.7635573Z             },
2026-06-22T01:08:01.7635667Z             {
2026-06-22T01:08:01.7635806Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7635920Z               "line": 261
2026-06-22T01:08:01.7636030Z             },
2026-06-22T01:08:01.7636131Z             {
2026-06-22T01:08:01.7636277Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7636378Z               "line": 275
2026-06-22T01:08:01.7636483Z             },
2026-06-22T01:08:01.7636583Z             {
2026-06-22T01:08:01.7636732Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7636850Z               "line": 320
2026-06-22T01:08:01.7636960Z             },
2026-06-22T01:08:01.7637061Z             {
2026-06-22T01:08:01.7637208Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7637323Z               "line": 347
2026-06-22T01:08:01.7637428Z             },
2026-06-22T01:08:01.7637536Z             {
2026-06-22T01:08:01.7637693Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7637805Z               "line": 359
2026-06-22T01:08:01.7637909Z             },
2026-06-22T01:08:01.7638011Z             {
2026-06-22T01:08:01.7638168Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7638277Z               "line": 373
2026-06-22T01:08:01.7638378Z             },
2026-06-22T01:08:01.7638482Z             {
2026-06-22T01:08:01.7638631Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7638745Z               "line": 400
2026-06-22T01:08:01.7638849Z             },
2026-06-22T01:08:01.7639021Z             {
2026-06-22T01:08:01.7639408Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7639604Z               "line": 643
2026-06-22T01:08:01.7639717Z             },
2026-06-22T01:08:01.7639822Z             {
2026-06-22T01:08:01.7639999Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7640132Z               "line": 989
2026-06-22T01:08:01.7640234Z             },
2026-06-22T01:08:01.7640337Z             {
2026-06-22T01:08:01.7640488Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7640599Z               "line": 329
2026-06-22T01:08:01.7640699Z             },
2026-06-22T01:08:01.7640808Z             {
2026-06-22T01:08:01.7640947Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7641070Z               "line": 1298
2026-06-22T01:08:01.7641176Z             },
2026-06-22T01:08:01.7641271Z             {
2026-06-22T01:08:01.7641418Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7641524Z               "line": 1370
2026-06-22T01:08:01.7641624Z             },
2026-06-22T01:08:01.7641728Z             {
2026-06-22T01:08:01.7641872Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7641981Z               "line": 1382
2026-06-22T01:08:01.7642071Z             },
2026-06-22T01:08:01.7642444Z             {
2026-06-22T01:08:01.7642591Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7642705Z               "line": 2127
2026-06-22T01:08:01.7646170Z             },
2026-06-22T01:08:01.7646329Z             {
2026-06-22T01:08:01.7646494Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7646615Z               "line": 188
2026-06-22T01:08:01.7646714Z             },
2026-06-22T01:08:01.7646805Z             {
2026-06-22T01:08:01.7646953Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7647062Z               "line": 265
2026-06-22T01:08:01.7647172Z             },
2026-06-22T01:08:01.7647429Z             {
2026-06-22T01:08:01.7647588Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7647696Z               "line": 276
2026-06-22T01:08:01.7647796Z             },
2026-06-22T01:08:01.7647898Z             {
2026-06-22T01:08:01.7648044Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7648148Z               "line": 329
2026-06-22T01:08:01.7648258Z             },
2026-06-22T01:08:01.7648366Z             {
2026-06-22T01:08:01.7648513Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7648619Z               "line": 56
2026-06-22T01:08:01.7648718Z             },
2026-06-22T01:08:01.7648823Z             {
2026-06-22T01:08:01.7649037Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7649147Z               "line": 188
2026-06-22T01:08:01.7649243Z             },
2026-06-22T01:08:01.7649348Z             {
2026-06-22T01:08:01.7649487Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:08:01.7649600Z               "line": 82
2026-06-22T01:08:01.7649705Z             },
2026-06-22T01:08:01.7649806Z             {
2026-06-22T01:08:01.7649948Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7650058Z               "line": 308
2026-06-22T01:08:01.7650164Z             },
2026-06-22T01:08:01.7650268Z             {
2026-06-22T01:08:01.7650411Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.7650526Z               "line": 424
2026-06-22T01:08:01.7650625Z             },
2026-06-22T01:08:01.7650726Z             {
2026-06-22T01:08:01.7650860Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7650973Z               "line": 2006
2026-06-22T01:08:01.7651068Z             }
2026-06-22T01:08:01.7651174Z           ]
2026-06-22T01:08:01.7651283Z         },
2026-06-22T01:08:01.7651382Z         "int": {
2026-06-22T01:08:01.7651503Z           "complete": true,
2026-06-22T01:08:01.7651606Z           "evidence": [
2026-06-22T01:08:01.7651717Z             {
2026-06-22T01:08:01.7651870Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T01:08:01.7651974Z               "line": 57
2026-06-22T01:08:01.7652075Z             },
2026-06-22T01:08:01.7652175Z             {
2026-06-22T01:08:01.7652321Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T01:08:01.7652423Z               "line": 41
2026-06-22T01:08:01.7652527Z             }
2026-06-22T01:08:01.7652627Z           ]
2026-06-22T01:08:01.7652729Z         },
2026-06-22T01:08:01.7652837Z         "unit": {
2026-06-22T01:08:01.7652951Z           "complete": true,
2026-06-22T01:08:01.7653053Z           "evidence": [
2026-06-22T01:08:01.7653156Z             {
2026-06-22T01:08:01.7653317Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.7653427Z               "line": 532
2026-06-22T01:08:01.7653530Z             },
2026-06-22T01:08:01.7653634Z             {
2026-06-22T01:08:01.7653793Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.7653906Z               "line": 757
2026-06-22T01:08:01.7654012Z             },
2026-06-22T01:08:01.7654117Z             {
2026-06-22T01:08:01.7654264Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7654379Z               "line": 1067
2026-06-22T01:08:01.7654483Z             },
2026-06-22T01:08:01.7654694Z             {
2026-06-22T01:08:01.7654846Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7654952Z               "line": 1101
2026-06-22T01:08:01.7655061Z             },
2026-06-22T01:08:01.7655160Z             {
2026-06-22T01:08:01.7655314Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7655427Z               "line": 1143
2026-06-22T01:08:01.7655528Z             },
2026-06-22T01:08:01.7655629Z             {
2026-06-22T01:08:01.7655771Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7655886Z               "line": 1215
2026-06-22T01:08:01.7656085Z             },
2026-06-22T01:08:01.7656184Z             {
2026-06-22T01:08:01.7656336Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7656444Z               "line": 1228
2026-06-22T01:08:01.7656550Z             },
2026-06-22T01:08:01.7656650Z             {
2026-06-22T01:08:01.7656797Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7656908Z               "line": 1251
2026-06-22T01:08:01.7657003Z             },
2026-06-22T01:08:01.7657102Z             {
2026-06-22T01:08:01.7657242Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7657346Z               "line": 1277
2026-06-22T01:08:01.7657446Z             },
2026-06-22T01:08:01.7657552Z             {
2026-06-22T01:08:01.7657703Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7657809Z               "line": 1291
2026-06-22T01:08:01.7657919Z             },
2026-06-22T01:08:01.7658018Z             {
2026-06-22T01:08:01.7658172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7658275Z               "line": 1315
2026-06-22T01:08:01.7658380Z             },
2026-06-22T01:08:01.7658477Z             {
2026-06-22T01:08:01.7658628Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7658736Z               "line": 1447
2026-06-22T01:08:01.7658842Z             },
2026-06-22T01:08:01.7659016Z             {
2026-06-22T01:08:01.7659160Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7659278Z               "line": 1623
2026-06-22T01:08:01.7659373Z             },
2026-06-22T01:08:01.7659470Z             {
2026-06-22T01:08:01.7659621Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7659722Z               "line": 1678
2026-06-22T01:08:01.7659827Z             },
2026-06-22T01:08:01.7659917Z             {
2026-06-22T01:08:01.7660066Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7660179Z               "line": 1724
2026-06-22T01:08:01.7660284Z             },
2026-06-22T01:08:01.7660390Z             {
2026-06-22T01:08:01.7660528Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7660633Z               "line": 1769
2026-06-22T01:08:01.7660734Z             },
2026-06-22T01:08:01.7660832Z             {
2026-06-22T01:08:01.7660981Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7661078Z               "line": 1813
2026-06-22T01:08:01.7661180Z             },
2026-06-22T01:08:01.7661281Z             {
2026-06-22T01:08:01.7661420Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7661523Z               "line": 1855
2026-06-22T01:08:01.7661618Z             },
2026-06-22T01:08:01.7661743Z             {
2026-06-22T01:08:01.7661890Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7662000Z               "line": 2481
2026-06-22T01:08:01.7662096Z             },
2026-06-22T01:08:01.7662195Z             {
2026-06-22T01:08:01.7662340Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7662444Z               "line": 217
2026-06-22T01:08:01.7662548Z             },
2026-06-22T01:08:01.7662673Z             {
2026-06-22T01:08:01.7662824Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7663030Z               "line": 233
2026-06-22T01:08:01.7663139Z             },
2026-06-22T01:08:01.7663241Z             {
2026-06-22T01:08:01.7663392Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7663502Z               "line": 254
2026-06-22T01:08:01.7663613Z             },
2026-06-22T01:08:01.7663716Z             {
2026-06-22T01:08:01.7663858Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7663968Z               "line": 265
2026-06-22T01:08:01.7664071Z             },
2026-06-22T01:08:01.7664175Z             {
2026-06-22T01:08:01.7664320Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7664524Z               "line": 278
2026-06-22T01:08:01.7664648Z             },
2026-06-22T01:08:01.7664748Z             {
2026-06-22T01:08:01.7664897Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7665010Z               "line": 289
2026-06-22T01:08:01.7665110Z             },
2026-06-22T01:08:01.7665207Z             {
2026-06-22T01:08:01.7665349Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7665463Z               "line": 301
2026-06-22T01:08:01.7665559Z             },
2026-06-22T01:08:01.7665664Z             {
2026-06-22T01:08:01.7665812Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7665921Z               "line": 312
2026-06-22T01:08:01.7666026Z             },
2026-06-22T01:08:01.7666127Z             {
2026-06-22T01:08:01.7666269Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7666379Z               "line": 323
2026-06-22T01:08:01.7666490Z             },
2026-06-22T01:08:01.7666607Z             {
2026-06-22T01:08:01.7666749Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7666868Z               "line": 332
2026-06-22T01:08:01.7666962Z             },
2026-06-22T01:08:01.7667057Z             {
2026-06-22T01:08:01.7667201Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7667324Z               "line": 342
2026-06-22T01:08:01.7667430Z             },
2026-06-22T01:08:01.7667530Z             {
2026-06-22T01:08:01.7667667Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T01:08:01.7667773Z               "line": 358
2026-06-22T01:08:01.7667873Z             },
2026-06-22T01:08:01.7667967Z             {
2026-06-22T01:08:01.7668116Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7668235Z               "line": 758
2026-06-22T01:08:01.7668354Z             },
2026-06-22T01:08:01.7668474Z             {
2026-06-22T01:08:01.7668616Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7668727Z               "line": 794
2026-06-22T01:08:01.7668836Z             },
2026-06-22T01:08:01.7668936Z             {
2026-06-22T01:08:01.7669566Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.7669686Z               "line": 966
2026-06-22T01:08:01.7669806Z             },
2026-06-22T01:08:01.7669919Z             {
2026-06-22T01:08:01.7670068Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:08:01.7670181Z               "line": 145
2026-06-22T01:08:01.7670287Z             },
2026-06-22T01:08:01.7670401Z             {
2026-06-22T01:08:01.7670553Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:08:01.7670664Z               "line": 224
2026-06-22T01:08:01.7670763Z             },
2026-06-22T01:08:01.7670868Z             {
2026-06-22T01:08:01.7671017Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T01:08:01.7671126Z               "line": 293
2026-06-22T01:08:01.7671231Z             },
2026-06-22T01:08:01.7671332Z             {
2026-06-22T01:08:01.7671483Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T01:08:01.7671590Z               "line": 17
2026-06-22T01:08:01.7671750Z             },
2026-06-22T01:08:01.7671881Z             {
2026-06-22T01:08:01.7672027Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T01:08:01.7672275Z               "line": 104
2026-06-22T01:08:01.7672379Z             }
2026-06-22T01:08:01.7672479Z           ]
2026-06-22T01:08:01.7672575Z         }
2026-06-22T01:08:01.7672671Z       }
2026-06-22T01:08:01.7672770Z     },
2026-06-22T01:08:01.7672866Z     {
2026-06-22T01:08:01.7673014Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-22T01:08:01.7676143Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-22T01:08:01.7676401Z       "requiredStages": [
2026-06-22T01:08:01.7676510Z         "doc",
2026-06-22T01:08:01.7676624Z         "impl",
2026-06-22T01:08:01.7676731Z         "unit",
2026-06-22T01:08:01.7676833Z         "int"
2026-06-22T01:08:01.7676963Z       ],
2026-06-22T01:08:01.7677069Z       "stages": {
2026-06-22T01:08:01.7677172Z         "doc": {
2026-06-22T01:08:01.7677290Z           "complete": true,
2026-06-22T01:08:01.7677400Z           "evidence": [
2026-06-22T01:08:01.7677498Z             {
2026-06-22T01:08:01.7677641Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7677771Z               "line": 388
2026-06-22T01:08:01.7677875Z             }
2026-06-22T01:08:01.7677975Z           ]
2026-06-22T01:08:01.7678076Z         },
2026-06-22T01:08:01.7678185Z         "impl": {
2026-06-22T01:08:01.7678305Z           "complete": true,
2026-06-22T01:08:01.7678414Z           "evidence": [
2026-06-22T01:08:01.7678514Z             {
2026-06-22T01:08:01.7678667Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7678771Z               "line": 823
2026-06-22T01:08:01.7678876Z             },
2026-06-22T01:08:01.7679081Z             {
2026-06-22T01:08:01.7679264Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7679377Z               "line": 846
2026-06-22T01:08:01.7679477Z             }
2026-06-22T01:08:01.7679578Z           ]
2026-06-22T01:08:01.7679678Z         },
2026-06-22T01:08:01.7679776Z         "int": {
2026-06-22T01:08:01.7679891Z           "complete": true,
2026-06-22T01:08:01.7680000Z           "evidence": [
2026-06-22T01:08:01.7680112Z             {
2026-06-22T01:08:01.7680265Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:08:01.7680380Z               "line": 228
2026-06-22T01:08:01.7680484Z             },
2026-06-22T01:08:01.7680590Z             {
2026-06-22T01:08:01.7680747Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:08:01.7680852Z               "line": 468
2026-06-22T01:08:01.7680957Z             }
2026-06-22T01:08:01.7681047Z           ]
2026-06-22T01:08:01.7681152Z         },
2026-06-22T01:08:01.7681253Z         "unit": {
2026-06-22T01:08:01.7681367Z           "complete": true,
2026-06-22T01:08:01.7681481Z           "evidence": [
2026-06-22T01:08:01.7681606Z             {
2026-06-22T01:08:01.7681830Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.7682001Z               "line": 1583
2026-06-22T01:08:01.7682106Z             }
2026-06-22T01:08:01.7682207Z           ]
2026-06-22T01:08:01.7682310Z         }
2026-06-22T01:08:01.7682531Z       }
2026-06-22T01:08:01.7682620Z     },
2026-06-22T01:08:01.7682724Z     {
2026-06-22T01:08:01.7682873Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-22T01:08:01.7686535Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-22T01:08:01.7686803Z       "requiredStages": [
2026-06-22T01:08:01.7686908Z         "doc",
2026-06-22T01:08:01.7687004Z         "impl",
2026-06-22T01:08:01.7687113Z         "unit"
2026-06-22T01:08:01.7687213Z       ],
2026-06-22T01:08:01.7687342Z       "stages": {
2026-06-22T01:08:01.7687442Z         "doc": {
2026-06-22T01:08:01.7687553Z           "complete": true,
2026-06-22T01:08:01.7687657Z           "evidence": [
2026-06-22T01:08:01.7687760Z             {
2026-06-22T01:08:01.7687894Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7688026Z               "line": 395
2026-06-22T01:08:01.7688130Z             }
2026-06-22T01:08:01.7688225Z           ]
2026-06-22T01:08:01.7688321Z         },
2026-06-22T01:08:01.7688416Z         "impl": {
2026-06-22T01:08:01.7688530Z           "complete": true,
2026-06-22T01:08:01.7688640Z           "evidence": [
2026-06-22T01:08:01.7688740Z             {
2026-06-22T01:08:01.7688884Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7689107Z               "line": 75
2026-06-22T01:08:01.7689218Z             }
2026-06-22T01:08:01.7689317Z           ]
2026-06-22T01:08:01.7689422Z         },
2026-06-22T01:08:01.7689528Z         "int": {
2026-06-22T01:08:01.7689637Z           "complete": false,
2026-06-22T01:08:01.7689746Z           "evidence": []
2026-06-22T01:08:01.7689843Z         },
2026-06-22T01:08:01.7689946Z         "unit": {
2026-06-22T01:08:01.7690066Z           "complete": true,
2026-06-22T01:08:01.7690177Z           "evidence": [
2026-06-22T01:08:01.7690280Z             {
2026-06-22T01:08:01.7690427Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.7690532Z               "line": 632
2026-06-22T01:08:01.7690630Z             }
2026-06-22T01:08:01.7690734Z           ]
2026-06-22T01:08:01.7690835Z         }
2026-06-22T01:08:01.7690926Z       }
2026-06-22T01:08:01.7691025Z     },
2026-06-22T01:08:01.7691122Z     {
2026-06-22T01:08:01.7691255Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-22T01:08:01.7691470Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-22T01:08:01.7691589Z       "requiredStages": [
2026-06-22T01:08:01.7691698Z         "impl",
2026-06-22T01:08:01.7691794Z         "unit"
2026-06-22T01:08:01.7691903Z       ],
2026-06-22T01:08:01.7692008Z       "stages": {
2026-06-22T01:08:01.7692118Z         "doc": {
2026-06-22T01:08:01.7692232Z           "complete": false,
2026-06-22T01:08:01.7692352Z           "evidence": []
2026-06-22T01:08:01.7692452Z         },
2026-06-22T01:08:01.7692546Z         "impl": {
2026-06-22T01:08:01.7692767Z           "complete": true,
2026-06-22T01:08:01.7692875Z           "evidence": [
2026-06-22T01:08:01.7692982Z             {
2026-06-22T01:08:01.7693138Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.7693265Z               "line": 172
2026-06-22T01:08:01.7693366Z             },
2026-06-22T01:08:01.7693467Z             {
2026-06-22T01:08:01.7693614Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.7693715Z               "line": 18
2026-06-22T01:08:01.7693815Z             },
2026-06-22T01:08:01.7693904Z             {
2026-06-22T01:08:01.7694049Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.7694276Z               "line": 100
2026-06-22T01:08:01.7694377Z             }
2026-06-22T01:08:01.7694482Z           ]
2026-06-22T01:08:01.7694582Z         },
2026-06-22T01:08:01.7694678Z         "int": {
2026-06-22T01:08:01.7694802Z           "complete": false,
2026-06-22T01:08:01.7694906Z           "evidence": []
2026-06-22T01:08:01.7695012Z         },
2026-06-22T01:08:01.7695110Z         "unit": {
2026-06-22T01:08:01.7695235Z           "complete": true,
2026-06-22T01:08:01.7695345Z           "evidence": [
2026-06-22T01:08:01.7695448Z             {
2026-06-22T01:08:01.7695587Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.7695705Z               "line": 857
2026-06-22T01:08:01.7695813Z             },
2026-06-22T01:08:01.7695909Z             {
2026-06-22T01:08:01.7696047Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.7696161Z               "line": 161
2026-06-22T01:08:01.7696267Z             },
2026-06-22T01:08:01.7696372Z             {
2026-06-22T01:08:01.7696519Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.7696638Z               "line": 233
2026-06-22T01:08:01.7696743Z             }
2026-06-22T01:08:01.7696834Z           ]
2026-06-22T01:08:01.7696930Z         }
2026-06-22T01:08:01.7697030Z       }
2026-06-22T01:08:01.7697125Z     },
2026-06-22T01:08:01.7697230Z     {
2026-06-22T01:08:01.7697363Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-22T01:08:01.7697822Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-22T01:08:01.7697945Z       "requiredStages": [
2026-06-22T01:08:01.7698040Z         "impl",
2026-06-22T01:08:01.7698141Z         "unit"
2026-06-22T01:08:01.7698236Z       ],
2026-06-22T01:08:01.7698349Z       "stages": {
2026-06-22T01:08:01.7698454Z         "doc": {
2026-06-22T01:08:01.7698563Z           "complete": true,
2026-06-22T01:08:01.7698675Z           "evidence": [
2026-06-22T01:08:01.7698781Z             {
2026-06-22T01:08:01.7698920Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7699105Z               "line": 220
2026-06-22T01:08:01.7699200Z             }
2026-06-22T01:08:01.7699305Z           ]
2026-06-22T01:08:01.7699406Z         },
2026-06-22T01:08:01.7699515Z         "impl": {
2026-06-22T01:08:01.7699634Z           "complete": true,
2026-06-22T01:08:01.7699749Z           "evidence": [
2026-06-22T01:08:01.7699839Z             {
2026-06-22T01:08:01.7699982Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.7700103Z               "line": 316
2026-06-22T01:08:01.7700201Z             },
2026-06-22T01:08:01.7700302Z             {
2026-06-22T01:08:01.7700446Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.7700549Z               "line": 356
2026-06-22T01:08:01.7700655Z             },
2026-06-22T01:08:01.7700761Z             {
2026-06-22T01:08:01.7700902Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.7701015Z               "line": 578
2026-06-22T01:08:01.7701115Z             },
2026-06-22T01:08:01.7701219Z             {
2026-06-22T01:08:01.7701362Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.7701467Z               "line": 77
2026-06-22T01:08:01.7701672Z             }
2026-06-22T01:08:01.7701777Z           ]
2026-06-22T01:08:01.7701876Z         },
2026-06-22T01:08:01.7701977Z         "int": {
2026-06-22T01:08:01.7702092Z           "complete": false,
2026-06-22T01:08:01.7702205Z           "evidence": []
2026-06-22T01:08:01.7702302Z         },
2026-06-22T01:08:01.7702401Z         "unit": {
2026-06-22T01:08:01.7702520Z           "complete": true,
2026-06-22T01:08:01.7702631Z           "evidence": [
2026-06-22T01:08:01.7702735Z             {
2026-06-22T01:08:01.7702873Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.7702984Z               "line": 747
2026-06-22T01:08:01.7703092Z             },
2026-06-22T01:08:01.7703280Z             {
2026-06-22T01:08:01.7703436Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.7703547Z               "line": 785
2026-06-22T01:08:01.7703656Z             },
2026-06-22T01:08:01.7703750Z             {
2026-06-22T01:08:01.7703897Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.7704013Z               "line": 166
2026-06-22T01:08:01.7704112Z             }
2026-06-22T01:08:01.7704207Z           ]
2026-06-22T01:08:01.7704308Z         }
2026-06-22T01:08:01.7704412Z       }
2026-06-22T01:08:01.7704508Z     },
2026-06-22T01:08:01.7704609Z     {
2026-06-22T01:08:01.7704751Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-22T01:08:01.7705323Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-22T01:08:01.7705447Z       "requiredStages": [
2026-06-22T01:08:01.7705558Z         "impl",
2026-06-22T01:08:01.7705661Z         "unit"
2026-06-22T01:08:01.7705762Z       ],
2026-06-22T01:08:01.7705863Z       "stages": {
2026-06-22T01:08:01.7705971Z         "doc": {
2026-06-22T01:08:01.7706085Z           "complete": false,
2026-06-22T01:08:01.7706199Z           "evidence": []
2026-06-22T01:08:01.7706302Z         },
2026-06-22T01:08:01.7706416Z         "impl": {
2026-06-22T01:08:01.7706527Z           "complete": true,
2026-06-22T01:08:01.7706631Z           "evidence": [
2026-06-22T01:08:01.7706736Z             {
2026-06-22T01:08:01.7706884Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:08:01.7706993Z               "line": 22
2026-06-22T01:08:01.7707099Z             },
2026-06-22T01:08:01.7707204Z             {
2026-06-22T01:08:01.7707341Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.7707457Z               "line": 487
2026-06-22T01:08:01.7707561Z             },
2026-06-22T01:08:01.7707655Z             {
2026-06-22T01:08:01.7707810Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:08:01.7707914Z               "line": 17
2026-06-22T01:08:01.7708028Z             },
2026-06-22T01:08:01.7708125Z             {
2026-06-22T01:08:01.7708276Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:08:01.7708396Z               "line": 147
2026-06-22T01:08:01.7708500Z             },
2026-06-22T01:08:01.7708600Z             {
2026-06-22T01:08:01.7708759Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.7708871Z               "line": 226
2026-06-22T01:08:01.7709052Z             },
2026-06-22T01:08:01.7709151Z             {
2026-06-22T01:08:01.7709312Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.7709422Z               "line": 251
2026-06-22T01:08:01.7709517Z             },
2026-06-22T01:08:01.7709621Z             {
2026-06-22T01:08:01.7709775Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.7709884Z               "line": 277
2026-06-22T01:08:01.7709990Z             },
2026-06-22T01:08:01.7710089Z             {
2026-06-22T01:08:01.7710237Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.7710348Z               "line": 124
2026-06-22T01:08:01.7710447Z             },
2026-06-22T01:08:01.7710658Z             {
2026-06-22T01:08:01.7710809Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.7710915Z               "line": 224
2026-06-22T01:08:01.7711025Z             }
2026-06-22T01:08:01.7711124Z           ]
2026-06-22T01:08:01.7711225Z         },
2026-06-22T01:08:01.7711330Z         "int": {
2026-06-22T01:08:01.7711447Z           "complete": false,
2026-06-22T01:08:01.7711552Z           "evidence": []
2026-06-22T01:08:01.7711643Z         },
2026-06-22T01:08:01.7711745Z         "unit": {
2026-06-22T01:08:01.7711859Z           "complete": true,
2026-06-22T01:08:01.7711965Z           "evidence": [
2026-06-22T01:08:01.7712169Z             {
2026-06-22T01:08:01.7712323Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:08:01.7712427Z               "line": 63
2026-06-22T01:08:01.7712518Z             },
2026-06-22T01:08:01.7712623Z             {
2026-06-22T01:08:01.7712770Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:08:01.7712876Z               "line": 73
2026-06-22T01:08:01.7712975Z             },
2026-06-22T01:08:01.7713075Z             {
2026-06-22T01:08:01.7713215Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T01:08:01.7713324Z               "line": 85
2026-06-22T01:08:01.7713429Z             },
2026-06-22T01:08:01.7713530Z             {
2026-06-22T01:08:01.7713667Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:08:01.7713777Z               "line": 346
2026-06-22T01:08:01.7713883Z             },
2026-06-22T01:08:01.7713986Z             {
2026-06-22T01:08:01.7714130Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:08:01.7714239Z               "line": 281
2026-06-22T01:08:01.7714343Z             },
2026-06-22T01:08:01.7714452Z             {
2026-06-22T01:08:01.7714610Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:08:01.7714724Z               "line": 322
2026-06-22T01:08:01.7714830Z             },
2026-06-22T01:08:01.7714939Z             {
2026-06-22T01:08:01.7715082Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T01:08:01.7715197Z               "line": 360
2026-06-22T01:08:01.7715296Z             },
2026-06-22T01:08:01.7715397Z             {
2026-06-22T01:08:01.7715554Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.7715668Z               "line": 688
2026-06-22T01:08:01.7715775Z             },
2026-06-22T01:08:01.7715874Z             {
2026-06-22T01:08:01.7716022Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.7716132Z               "line": 397
2026-06-22T01:08:01.7716231Z             },
2026-06-22T01:08:01.7716336Z             {
2026-06-22T01:08:01.7716493Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.7716602Z               "line": 440
2026-06-22T01:08:01.7716702Z             }
2026-06-22T01:08:01.7716802Z           ]
2026-06-22T01:08:01.7716900Z         }
2026-06-22T01:08:01.7717005Z       }
2026-06-22T01:08:01.7717106Z     },
2026-06-22T01:08:01.7717211Z     {
2026-06-22T01:08:01.7717339Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-22T01:08:01.7717586Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-22T01:08:01.7717702Z       "requiredStages": [
2026-06-22T01:08:01.7717811Z         "impl",
2026-06-22T01:08:01.7717915Z         "unit"
2026-06-22T01:08:01.7718012Z       ],
2026-06-22T01:08:01.7718121Z       "stages": {
2026-06-22T01:08:01.7718220Z         "doc": {
2026-06-22T01:08:01.7718346Z           "complete": false,
2026-06-22T01:08:01.7718460Z           "evidence": []
2026-06-22T01:08:01.7718559Z         },
2026-06-22T01:08:01.7718670Z         "impl": {
2026-06-22T01:08:01.7718783Z           "complete": true,
2026-06-22T01:08:01.7718894Z           "evidence": [
2026-06-22T01:08:01.7719079Z             {
2026-06-22T01:08:01.7719228Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:08:01.7719338Z               "line": 169
2026-06-22T01:08:01.7719545Z             }
2026-06-22T01:08:01.7719650Z           ]
2026-06-22T01:08:01.7719749Z         },
2026-06-22T01:08:01.7719858Z         "int": {
2026-06-22T01:08:01.7719969Z           "complete": true,
2026-06-22T01:08:01.7720073Z           "evidence": [
2026-06-22T01:08:01.7720177Z             {
2026-06-22T01:08:01.7720316Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T01:08:01.7720420Z               "line": 44
2026-06-22T01:08:01.7720526Z             },
2026-06-22T01:08:01.7720631Z             {
2026-06-22T01:08:01.7720763Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T01:08:01.7720884Z               "line": 66
2026-06-22T01:08:01.7721074Z             }
2026-06-22T01:08:01.7721180Z           ]
2026-06-22T01:08:01.7721284Z         },
2026-06-22T01:08:01.7721379Z         "unit": {
2026-06-22T01:08:01.7721490Z           "complete": true,
2026-06-22T01:08:01.7721595Z           "evidence": [
2026-06-22T01:08:01.7721699Z             {
2026-06-22T01:08:01.7721848Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:08:01.7721961Z               "line": 186
2026-06-22T01:08:01.7722074Z             },
2026-06-22T01:08:01.7722169Z             {
2026-06-22T01:08:01.7722310Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:08:01.7722414Z               "line": 238
2026-06-22T01:08:01.7722521Z             },
2026-06-22T01:08:01.7722621Z             {
2026-06-22T01:08:01.7722754Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T01:08:01.7722873Z               "line": 266
2026-06-22T01:08:01.7722973Z             }
2026-06-22T01:08:01.7723078Z           ]
2026-06-22T01:08:01.7723179Z         }
2026-06-22T01:08:01.7723278Z       }
2026-06-22T01:08:01.7723369Z     },
2026-06-22T01:08:01.7723470Z     {
2026-06-22T01:08:01.7723621Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-22T01:08:01.7730276Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-22T01:08:01.7730499Z       "requiredStages": [
2026-06-22T01:08:01.7730738Z         "impl",
2026-06-22T01:08:01.7730843Z         "unit",
2026-06-22T01:08:01.7730948Z         "int"
2026-06-22T01:08:01.7731047Z       ],
2026-06-22T01:08:01.7731144Z       "stages": {
2026-06-22T01:08:01.7731253Z         "doc": {
2026-06-22T01:08:01.7731362Z           "complete": false,
2026-06-22T01:08:01.7731477Z           "evidence": []
2026-06-22T01:08:01.7731572Z         },
2026-06-22T01:08:01.7731682Z         "impl": {
2026-06-22T01:08:01.7731797Z           "complete": true,
2026-06-22T01:08:01.7731905Z           "evidence": [
2026-06-22T01:08:01.7732016Z             {
2026-06-22T01:08:01.7732169Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.7732432Z               "line": 109
2026-06-22T01:08:01.7732535Z             },
2026-06-22T01:08:01.7732639Z             {
2026-06-22T01:08:01.7732791Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.7732899Z               "line": 156
2026-06-22T01:08:01.7733009Z             },
2026-06-22T01:08:01.7733109Z             {
2026-06-22T01:08:01.7733251Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.7733362Z               "line": 261
2026-06-22T01:08:01.7733472Z             },
2026-06-22T01:08:01.7733571Z             {
2026-06-22T01:08:01.7733701Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7733820Z               "line": 954
2026-06-22T01:08:01.7733909Z             }
2026-06-22T01:08:01.7734011Z           ]
2026-06-22T01:08:01.7734115Z         },
2026-06-22T01:08:01.7734220Z         "int": {
2026-06-22T01:08:01.7734335Z           "complete": true,
2026-06-22T01:08:01.7734449Z           "evidence": [
2026-06-22T01:08:01.7734549Z             {
2026-06-22T01:08:01.7734698Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.7734816Z               "line": 1051
2026-06-22T01:08:01.7734917Z             }
2026-06-22T01:08:01.7735022Z           ]
2026-06-22T01:08:01.7735131Z         },
2026-06-22T01:08:01.7735232Z         "unit": {
2026-06-22T01:08:01.7735342Z           "complete": true,
2026-06-22T01:08:01.7735444Z           "evidence": [
2026-06-22T01:08:01.7735549Z             {
2026-06-22T01:08:01.7735689Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7735811Z               "line": 1498
2026-06-22T01:08:01.7735916Z             }
2026-06-22T01:08:01.7736012Z           ]
2026-06-22T01:08:01.7736116Z         }
2026-06-22T01:08:01.7736208Z       }
2026-06-22T01:08:01.7736312Z     },
2026-06-22T01:08:01.7736416Z     {
2026-06-22T01:08:01.7736595Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-22T01:08:01.7739522Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-22T01:08:01.7739656Z       "requiredStages": [],
2026-06-22T01:08:01.7739777Z       "stages": {
2026-06-22T01:08:01.7743564Z         "doc": {
2026-06-22T01:08:01.7743713Z           "complete": false,
2026-06-22T01:08:01.7743826Z           "evidence": []
2026-06-22T01:08:01.7743932Z         },
2026-06-22T01:08:01.7744032Z         "impl": {
2026-06-22T01:08:01.7744160Z           "complete": false,
2026-06-22T01:08:01.7744436Z           "evidence": []
2026-06-22T01:08:01.7744538Z         },
2026-06-22T01:08:01.7744647Z         "int": {
2026-06-22T01:08:01.7744756Z           "complete": false,
2026-06-22T01:08:01.7744867Z           "evidence": []
2026-06-22T01:08:01.7744957Z         },
2026-06-22T01:08:01.7745066Z         "unit": {
2026-06-22T01:08:01.7745191Z           "complete": false,
2026-06-22T01:08:01.7745300Z           "evidence": []
2026-06-22T01:08:01.7745400Z         }
2026-06-22T01:08:01.7745502Z       }
2026-06-22T01:08:01.7745601Z     },
2026-06-22T01:08:01.7745701Z     {
2026-06-22T01:08:01.7745849Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-22T01:08:01.7750488Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-22T01:08:01.7750703Z       "requiredStages": [],
2026-06-22T01:08:01.7750807Z       "stages": {
2026-06-22T01:08:01.7750909Z         "doc": {
2026-06-22T01:08:01.7751018Z           "complete": false,
2026-06-22T01:08:01.7751131Z           "evidence": []
2026-06-22T01:08:01.7751231Z         },
2026-06-22T01:08:01.7751331Z         "impl": {
2026-06-22T01:08:01.7751448Z           "complete": false,
2026-06-22T01:08:01.7751558Z           "evidence": []
2026-06-22T01:08:01.7751658Z         },
2026-06-22T01:08:01.7751758Z         "int": {
2026-06-22T01:08:01.7751882Z           "complete": false,
2026-06-22T01:08:01.7751992Z           "evidence": []
2026-06-22T01:08:01.7752086Z         },
2026-06-22T01:08:01.7752192Z         "unit": {
2026-06-22T01:08:01.7752306Z           "complete": false,
2026-06-22T01:08:01.7752415Z           "evidence": []
2026-06-22T01:08:01.7752526Z         }
2026-06-22T01:08:01.7752626Z       }
2026-06-22T01:08:01.7752726Z     },
2026-06-22T01:08:01.7752826Z     {
2026-06-22T01:08:01.7752978Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-22T01:08:01.7766878Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-22T01:08:01.7767535Z       "requiredStages": [
2026-06-22T01:08:01.7767722Z         "doc",
2026-06-22T01:08:01.7767830Z         "impl",
2026-06-22T01:08:01.7767936Z         "unit",
2026-06-22T01:08:01.7768031Z         "int"
2026-06-22T01:08:01.7768130Z       ],
2026-06-22T01:08:01.7768237Z       "stages": {
2026-06-22T01:08:01.7768341Z         "doc": {
2026-06-22T01:08:01.7768455Z           "complete": true,
2026-06-22T01:08:01.7768566Z           "evidence": [
2026-06-22T01:08:01.7768665Z             {
2026-06-22T01:08:01.7768808Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7768909Z               "line": 468
2026-06-22T01:08:01.7769098Z             }
2026-06-22T01:08:01.7769196Z           ]
2026-06-22T01:08:01.7769408Z         },
2026-06-22T01:08:01.7769518Z         "impl": {
2026-06-22T01:08:01.7769635Z           "complete": true,
2026-06-22T01:08:01.7769753Z           "evidence": [
2026-06-22T01:08:01.7769858Z             {
2026-06-22T01:08:01.7770006Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7770111Z               "line": 348
2026-06-22T01:08:01.7770226Z             },
2026-06-22T01:08:01.7770335Z             {
2026-06-22T01:08:01.7770470Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7770578Z               "line": 1282
2026-06-22T01:08:01.7770683Z             },
2026-06-22T01:08:01.7770794Z             {
2026-06-22T01:08:01.7770937Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7771060Z               "line": 853
2026-06-22T01:08:01.7771166Z             }
2026-06-22T01:08:01.7771270Z           ]
2026-06-22T01:08:01.7771375Z         },
2026-06-22T01:08:01.7771476Z         "int": {
2026-06-22T01:08:01.7771599Z           "complete": true,
2026-06-22T01:08:01.7771699Z           "evidence": [
2026-06-22T01:08:01.7771805Z             {
2026-06-22T01:08:01.7771956Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.7772067Z               "line": 1206
2026-06-22T01:08:01.7772176Z             },
2026-06-22T01:08:01.7772270Z             {
2026-06-22T01:08:01.7772418Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.7772531Z               "line": 1307
2026-06-22T01:08:01.7772630Z             },
2026-06-22T01:08:01.7772740Z             {
2026-06-22T01:08:01.7772883Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.7772992Z               "line": 1169
2026-06-22T01:08:01.7773093Z             }
2026-06-22T01:08:01.7773202Z           ]
2026-06-22T01:08:01.7773302Z         },
2026-06-22T01:08:01.7773408Z         "unit": {
2026-06-22T01:08:01.7773531Z           "complete": true,
2026-06-22T01:08:01.7773636Z           "evidence": [
2026-06-22T01:08:01.7773747Z             {
2026-06-22T01:08:01.7773884Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7774000Z               "line": 3125
2026-06-22T01:08:01.7774099Z             }
2026-06-22T01:08:01.7774203Z           ]
2026-06-22T01:08:01.7774310Z         }
2026-06-22T01:08:01.7774414Z       }
2026-06-22T01:08:01.7774518Z     },
2026-06-22T01:08:01.7774610Z     {
2026-06-22T01:08:01.7774756Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-22T01:08:01.7775210Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-22T01:08:01.7775326Z       "requiredStages": [
2026-06-22T01:08:01.7775435Z         "impl",
2026-06-22T01:08:01.7775540Z         "unit",
2026-06-22T01:08:01.7775636Z         "int"
2026-06-22T01:08:01.7775741Z       ],
2026-06-22T01:08:01.7775850Z       "stages": {
2026-06-22T01:08:01.7775947Z         "doc": {
2026-06-22T01:08:01.7776070Z           "complete": false,
2026-06-22T01:08:01.7776189Z           "evidence": []
2026-06-22T01:08:01.7776289Z         },
2026-06-22T01:08:01.7776399Z         "impl": {
2026-06-22T01:08:01.7776513Z           "complete": true,
2026-06-22T01:08:01.7776628Z           "evidence": [
2026-06-22T01:08:01.7776728Z             {
2026-06-22T01:08:01.7777013Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7777123Z               "line": 178
2026-06-22T01:08:01.7777220Z             },
2026-06-22T01:08:01.7777323Z             {
2026-06-22T01:08:01.7777487Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7777605Z               "line": 226
2026-06-22T01:08:01.7777714Z             },
2026-06-22T01:08:01.7777813Z             {
2026-06-22T01:08:01.7777957Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.7778061Z               "line": 79
2026-06-22T01:08:01.7778167Z             },
2026-06-22T01:08:01.7778263Z             {
2026-06-22T01:08:01.7778487Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.7778591Z               "line": 52
2026-06-22T01:08:01.7778696Z             },
2026-06-22T01:08:01.7778797Z             {
2026-06-22T01:08:01.7778934Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.7779102Z               "line": 263
2026-06-22T01:08:01.7779206Z             },
2026-06-22T01:08:01.7779316Z             {
2026-06-22T01:08:01.7779469Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7779573Z               "line": 27
2026-06-22T01:08:01.7779668Z             },
2026-06-22T01:08:01.7779770Z             {
2026-06-22T01:08:01.7779921Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7780025Z               "line": 79
2026-06-22T01:08:01.7780130Z             },
2026-06-22T01:08:01.7780228Z             {
2026-06-22T01:08:01.7780376Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7780486Z               "line": 102
2026-06-22T01:08:01.7780595Z             },
2026-06-22T01:08:01.7780700Z             {
2026-06-22T01:08:01.7780848Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.7780962Z               "line": 116
2026-06-22T01:08:01.7781058Z             }
2026-06-22T01:08:01.7781163Z           ]
2026-06-22T01:08:01.7781271Z         },
2026-06-22T01:08:01.7781382Z         "int": {
2026-06-22T01:08:01.7781506Z           "complete": true,
2026-06-22T01:08:01.7781611Z           "evidence": [
2026-06-22T01:08:01.7781721Z             {
2026-06-22T01:08:01.7781887Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T01:08:01.7781989Z               "line": 43
2026-06-22T01:08:01.7782092Z             }
2026-06-22T01:08:01.7782193Z           ]
2026-06-22T01:08:01.7782299Z         },
2026-06-22T01:08:01.7782393Z         "unit": {
2026-06-22T01:08:01.7782498Z           "complete": true,
2026-06-22T01:08:01.7782613Z           "evidence": [
2026-06-22T01:08:01.7782713Z             {
2026-06-22T01:08:01.7782868Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7782973Z               "line": 678
2026-06-22T01:08:01.7783072Z             },
2026-06-22T01:08:01.7783176Z             {
2026-06-22T01:08:01.7783330Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.7783439Z               "line": 495
2026-06-22T01:08:01.7783547Z             },
2026-06-22T01:08:01.7783649Z             {
2026-06-22T01:08:01.7783805Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7783921Z               "line": 124
2026-06-22T01:08:01.7784025Z             },
2026-06-22T01:08:01.7784129Z             {
2026-06-22T01:08:01.7784283Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7784402Z               "line": 143
2026-06-22T01:08:01.7784506Z             },
2026-06-22T01:08:01.7784607Z             {
2026-06-22T01:08:01.7784759Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7784874Z               "line": 160
2026-06-22T01:08:01.7784983Z             },
2026-06-22T01:08:01.7785088Z             {
2026-06-22T01:08:01.7785228Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7785345Z               "line": 187
2026-06-22T01:08:01.7785444Z             },
2026-06-22T01:08:01.7785550Z             {
2026-06-22T01:08:01.7785810Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T01:08:01.7785915Z               "line": 206
2026-06-22T01:08:01.7786028Z             },
2026-06-22T01:08:01.7786129Z             {
2026-06-22T01:08:01.7786278Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.7786381Z               "line": 229
2026-06-22T01:08:01.7786488Z             }
2026-06-22T01:08:01.7786587Z           ]
2026-06-22T01:08:01.7786696Z         }
2026-06-22T01:08:01.7786797Z       }
2026-06-22T01:08:01.7786896Z     },
2026-06-22T01:08:01.7787001Z     {
2026-06-22T01:08:01.7787151Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-22T01:08:01.7787936Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-22T01:08:01.7788052Z       "requiredStages": [
2026-06-22T01:08:01.7788161Z         "impl",
2026-06-22T01:08:01.7788264Z         "unit"
2026-06-22T01:08:01.7788365Z       ],
2026-06-22T01:08:01.7788480Z       "stages": {
2026-06-22T01:08:01.7788583Z         "doc": {
2026-06-22T01:08:01.7788693Z           "complete": false,
2026-06-22T01:08:01.7788808Z           "evidence": []
2026-06-22T01:08:01.7788908Z         },
2026-06-22T01:08:01.7789085Z         "impl": {
2026-06-22T01:08:01.7789199Z           "complete": true,
2026-06-22T01:08:01.7789309Z           "evidence": [
2026-06-22T01:08:01.7789414Z             {
2026-06-22T01:08:01.7789566Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7789687Z               "line": 1329
2026-06-22T01:08:01.7789790Z             },
2026-06-22T01:08:01.7789900Z             {
2026-06-22T01:08:01.7790034Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7790143Z               "line": 1585
2026-06-22T01:08:01.7790238Z             }
2026-06-22T01:08:01.7790349Z           ]
2026-06-22T01:08:01.7790452Z         },
2026-06-22T01:08:01.7790552Z         "int": {
2026-06-22T01:08:01.7790680Z           "complete": false,
2026-06-22T01:08:01.7790788Z           "evidence": []
2026-06-22T01:08:01.7790897Z         },
2026-06-22T01:08:01.7791003Z         "unit": {
2026-06-22T01:08:01.7791122Z           "complete": true,
2026-06-22T01:08:01.7791232Z           "evidence": [
2026-06-22T01:08:01.7791332Z             {
2026-06-22T01:08:01.7791498Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T01:08:01.7791614Z               "line": 161
2026-06-22T01:08:01.7791709Z             }
2026-06-22T01:08:01.7791804Z           ]
2026-06-22T01:08:01.7791919Z         }
2026-06-22T01:08:01.7792024Z       }
2026-06-22T01:08:01.7792123Z     },
2026-06-22T01:08:01.7792219Z     {
2026-06-22T01:08:01.7792352Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-22T01:08:01.7794103Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-22T01:08:01.7794238Z       "requiredStages": [
2026-06-22T01:08:01.7794342Z         "impl",
2026-06-22T01:08:01.7794447Z         "unit"
2026-06-22T01:08:01.7794567Z       ],
2026-06-22T01:08:01.7794675Z       "stages": {
2026-06-22T01:08:01.7794771Z         "doc": {
2026-06-22T01:08:01.7794890Z           "complete": false,
2026-06-22T01:08:01.7795000Z           "evidence": []
2026-06-22T01:08:01.7795101Z         },
2026-06-22T01:08:01.7795205Z         "impl": {
2026-06-22T01:08:01.7795440Z           "complete": true,
2026-06-22T01:08:01.7795553Z           "evidence": [
2026-06-22T01:08:01.7795662Z             {
2026-06-22T01:08:01.7795811Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.7795933Z               "line": 257
2026-06-22T01:08:01.7796028Z             }
2026-06-22T01:08:01.7796129Z           ]
2026-06-22T01:08:01.7796236Z         },
2026-06-22T01:08:01.7796345Z         "int": {
2026-06-22T01:08:01.7796466Z           "complete": false,
2026-06-22T01:08:01.7796570Z           "evidence": []
2026-06-22T01:08:01.7796679Z         },
2026-06-22T01:08:01.7796785Z         "unit": {
2026-06-22T01:08:01.7796903Z           "complete": true,
2026-06-22T01:08:01.7797142Z           "evidence": [
2026-06-22T01:08:01.7797251Z             {
2026-06-22T01:08:01.7797410Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.7797519Z               "line": 360
2026-06-22T01:08:01.7797628Z             }
2026-06-22T01:08:01.7797725Z           ]
2026-06-22T01:08:01.7797834Z         }
2026-06-22T01:08:01.7797924Z       }
2026-06-22T01:08:01.7798025Z     },
2026-06-22T01:08:01.7798119Z     {
2026-06-22T01:08:01.7798249Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-22T01:08:01.7800106Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-22T01:08:01.7800261Z       "requiredStages": [
2026-06-22T01:08:01.7800364Z         "impl",
2026-06-22T01:08:01.7800469Z         "unit"
2026-06-22T01:08:01.7800580Z       ],
2026-06-22T01:08:01.7800688Z       "stages": {
2026-06-22T01:08:01.7800794Z         "doc": {
2026-06-22T01:08:01.7800914Z           "complete": false,
2026-06-22T01:08:01.7801032Z           "evidence": []
2026-06-22T01:08:01.7801131Z         },
2026-06-22T01:08:01.7801236Z         "impl": {
2026-06-22T01:08:01.7801348Z           "complete": true,
2026-06-22T01:08:01.7801452Z           "evidence": [
2026-06-22T01:08:01.7801554Z             {
2026-06-22T01:08:01.7801706Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7801815Z               "line": 1018
2026-06-22T01:08:01.7801921Z             },
2026-06-22T01:08:01.7802044Z             {
2026-06-22T01:08:01.7802193Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7802316Z               "line": 283
2026-06-22T01:08:01.7802421Z             },
2026-06-22T01:08:01.7802517Z             {
2026-06-22T01:08:01.7802664Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7802769Z               "line": 316
2026-06-22T01:08:01.7802879Z             },
2026-06-22T01:08:01.7802979Z             {
2026-06-22T01:08:01.7803128Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T01:08:01.7803241Z               "line": 26
2026-06-22T01:08:01.7803341Z             }
2026-06-22T01:08:01.7803443Z           ]
2026-06-22T01:08:01.7803546Z         },
2026-06-22T01:08:01.7803652Z         "int": {
2026-06-22T01:08:01.7803763Z           "complete": false,
2026-06-22T01:08:01.7803875Z           "evidence": []
2026-06-22T01:08:01.7803969Z         },
2026-06-22T01:08:01.7804080Z         "unit": {
2026-06-22T01:08:01.7804183Z           "complete": true,
2026-06-22T01:08:01.7804305Z           "evidence": [
2026-06-22T01:08:01.7804407Z             {
2026-06-22T01:08:01.7804549Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T01:08:01.7804663Z               "line": 271
2026-06-22T01:08:01.7804769Z             },
2026-06-22T01:08:01.7804878Z             {
2026-06-22T01:08:01.7805117Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T01:08:01.7805236Z               "line": 348
2026-06-22T01:08:01.7805331Z             }
2026-06-22T01:08:01.7805427Z           ]
2026-06-22T01:08:01.7805527Z         }
2026-06-22T01:08:01.7805632Z       }
2026-06-22T01:08:01.7805737Z     },
2026-06-22T01:08:01.7805841Z     {
2026-06-22T01:08:01.7805976Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-22T01:08:01.7806185Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-22T01:08:01.7806305Z       "requiredStages": [
2026-06-22T01:08:01.7806405Z         "impl",
2026-06-22T01:08:01.7806517Z         "unit"
2026-06-22T01:08:01.7806740Z       ],
2026-06-22T01:08:01.7806843Z       "stages": {
2026-06-22T01:08:01.7806954Z         "doc": {
2026-06-22T01:08:01.7807074Z           "complete": false,
2026-06-22T01:08:01.7807187Z           "evidence": []
2026-06-22T01:08:01.7807288Z         },
2026-06-22T01:08:01.7807398Z         "impl": {
2026-06-22T01:08:01.7807526Z           "complete": true,
2026-06-22T01:08:01.7807622Z           "evidence": [
2026-06-22T01:08:01.7807736Z             {
2026-06-22T01:08:01.7807869Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7807979Z               "line": 40
2026-06-22T01:08:01.7808084Z             },
2026-06-22T01:08:01.7808189Z             {
2026-06-22T01:08:01.7808337Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7808446Z               "line": 103
2026-06-22T01:08:01.7808543Z             },
2026-06-22T01:08:01.7808647Z             {
2026-06-22T01:08:01.7808789Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7808896Z               "line": 218
2026-06-22T01:08:01.7809085Z             },
2026-06-22T01:08:01.7809187Z             {
2026-06-22T01:08:01.7809328Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7809446Z               "line": 323
2026-06-22T01:08:01.7809547Z             }
2026-06-22T01:08:01.7809662Z           ]
2026-06-22T01:08:01.7809761Z         },
2026-06-22T01:08:01.7809872Z         "int": {
2026-06-22T01:08:01.7809995Z           "complete": false,
2026-06-22T01:08:01.7810109Z           "evidence": []
2026-06-22T01:08:01.7810206Z         },
2026-06-22T01:08:01.7810310Z         "unit": {
2026-06-22T01:08:01.7810429Z           "complete": true,
2026-06-22T01:08:01.7810534Z           "evidence": [
2026-06-22T01:08:01.7810634Z             {
2026-06-22T01:08:01.7810773Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7810877Z               "line": 361
2026-06-22T01:08:01.7810982Z             },
2026-06-22T01:08:01.7811083Z             {
2026-06-22T01:08:01.7811234Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7811334Z               "line": 433
2026-06-22T01:08:01.7811446Z             },
2026-06-22T01:08:01.7811554Z             {
2026-06-22T01:08:01.7811695Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7811815Z               "line": 496
2026-06-22T01:08:01.7811913Z             },
2026-06-22T01:08:01.7812022Z             {
2026-06-22T01:08:01.7812162Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7812275Z               "line": 517
2026-06-22T01:08:01.7812376Z             }
2026-06-22T01:08:01.7812486Z           ]
2026-06-22T01:08:01.7812590Z         }
2026-06-22T01:08:01.7812691Z       }
2026-06-22T01:08:01.7812800Z     },
2026-06-22T01:08:01.7812890Z     {
2026-06-22T01:08:01.7813025Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-22T01:08:01.7815353Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-22T01:08:01.7815611Z       "requiredStages": [
2026-06-22T01:08:01.7815715Z         "impl",
2026-06-22T01:08:01.7815824Z         "unit"
2026-06-22T01:08:01.7815926Z       ],
2026-06-22T01:08:01.7816039Z       "stages": {
2026-06-22T01:08:01.7816144Z         "doc": {
2026-06-22T01:08:01.7816264Z           "complete": false,
2026-06-22T01:08:01.7816492Z           "evidence": []
2026-06-22T01:08:01.7816593Z         },
2026-06-22T01:08:01.7816706Z         "impl": {
2026-06-22T01:08:01.7816812Z           "complete": true,
2026-06-22T01:08:01.7816922Z           "evidence": [
2026-06-22T01:08:01.7817026Z             {
2026-06-22T01:08:01.7817192Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.7817300Z               "line": 402
2026-06-22T01:08:01.7817408Z             },
2026-06-22T01:08:01.7817514Z             {
2026-06-22T01:08:01.7817667Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.7817776Z               "line": 446
2026-06-22T01:08:01.7817877Z             }
2026-06-22T01:08:01.7817982Z           ]
2026-06-22T01:08:01.7818091Z         },
2026-06-22T01:08:01.7818192Z         "int": {
2026-06-22T01:08:01.7818315Z           "complete": false,
2026-06-22T01:08:01.7818430Z           "evidence": []
2026-06-22T01:08:01.7818535Z         },
2026-06-22T01:08:01.7818635Z         "unit": {
2026-06-22T01:08:01.7818744Z           "complete": true,
2026-06-22T01:08:01.7818864Z           "evidence": [
2026-06-22T01:08:01.7819030Z             {
2026-06-22T01:08:01.7819183Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.7819288Z               "line": 910
2026-06-22T01:08:01.7819384Z             }
2026-06-22T01:08:01.7819484Z           ]
2026-06-22T01:08:01.7819592Z         }
2026-06-22T01:08:01.7819703Z       }
2026-06-22T01:08:01.7819804Z     },
2026-06-22T01:08:01.7819902Z     {
2026-06-22T01:08:01.7820049Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-22T01:08:01.7820217Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-22T01:08:01.7820331Z       "requiredStages": [
2026-06-22T01:08:01.7820432Z         "impl",
2026-06-22T01:08:01.7820546Z         "unit"
2026-06-22T01:08:01.7820640Z       ],
2026-06-22T01:08:01.7820737Z       "stages": {
2026-06-22T01:08:01.7820847Z         "doc": {
2026-06-22T01:08:01.7820970Z           "complete": false,
2026-06-22T01:08:01.7821080Z           "evidence": []
2026-06-22T01:08:01.7821185Z         },
2026-06-22T01:08:01.7821299Z         "impl": {
2026-06-22T01:08:01.7821409Z           "complete": true,
2026-06-22T01:08:01.7821519Z           "evidence": [
2026-06-22T01:08:01.7821623Z             {
2026-06-22T01:08:01.7821776Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7821885Z               "line": 116
2026-06-22T01:08:01.7821992Z             },
2026-06-22T01:08:01.7822091Z             {
2026-06-22T01:08:01.7822228Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7822337Z               "line": 211
2026-06-22T01:08:01.7822432Z             }
2026-06-22T01:08:01.7822540Z           ]
2026-06-22T01:08:01.7822640Z         },
2026-06-22T01:08:01.7822746Z         "int": {
2026-06-22T01:08:01.7822874Z           "complete": false,
2026-06-22T01:08:01.7822984Z           "evidence": []
2026-06-22T01:08:01.7823094Z         },
2026-06-22T01:08:01.7823203Z         "unit": {
2026-06-22T01:08:01.7823314Z           "complete": true,
2026-06-22T01:08:01.7823432Z           "evidence": [
2026-06-22T01:08:01.7823527Z             {
2026-06-22T01:08:01.7823675Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7823779Z               "line": 388
2026-06-22T01:08:01.7823985Z             },
2026-06-22T01:08:01.7824090Z             {
2026-06-22T01:08:01.7824234Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.7824338Z               "line": 469
2026-06-22T01:08:01.7824447Z             }
2026-06-22T01:08:01.7824553Z           ]
2026-06-22T01:08:01.7824648Z         }
2026-06-22T01:08:01.7824752Z       }
2026-06-22T01:08:01.7824854Z     },
2026-06-22T01:08:01.7824949Z     {
2026-06-22T01:08:01.7825099Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-22T01:08:01.7826227Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-22T01:08:01.7826437Z       "requiredStages": [
2026-06-22T01:08:01.7826538Z         "impl",
2026-06-22T01:08:01.7826661Z         "unit"
2026-06-22T01:08:01.7826767Z       ],
2026-06-22T01:08:01.7826881Z       "stages": {
2026-06-22T01:08:01.7826980Z         "doc": {
2026-06-22T01:08:01.7827091Z           "complete": true,
2026-06-22T01:08:01.7827205Z           "evidence": [
2026-06-22T01:08:01.7827295Z             {
2026-06-22T01:08:01.7827440Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7827553Z               "line": 206
2026-06-22T01:08:01.7827661Z             }
2026-06-22T01:08:01.7827771Z           ]
2026-06-22T01:08:01.7827874Z         },
2026-06-22T01:08:01.7827978Z         "impl": {
2026-06-22T01:08:01.7828084Z           "complete": true,
2026-06-22T01:08:01.7828213Z           "evidence": [
2026-06-22T01:08:01.7828316Z             {
2026-06-22T01:08:01.7828471Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7828579Z               "line": 691
2026-06-22T01:08:01.7828684Z             },
2026-06-22T01:08:01.7828785Z             {
2026-06-22T01:08:01.7828927Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7829137Z               "line": 791
2026-06-22T01:08:01.7829237Z             },
2026-06-22T01:08:01.7829343Z             {
2026-06-22T01:08:01.7829495Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7829600Z               "line": 1120
2026-06-22T01:08:01.7829706Z             },
2026-06-22T01:08:01.7829800Z             {
2026-06-22T01:08:01.7829954Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.7830063Z               "line": 184
2026-06-22T01:08:01.7830162Z             }
2026-06-22T01:08:01.7830269Z           ]
2026-06-22T01:08:01.7830369Z         },
2026-06-22T01:08:01.7830472Z         "int": {
2026-06-22T01:08:01.7830590Z           "complete": false,
2026-06-22T01:08:01.7830701Z           "evidence": []
2026-06-22T01:08:01.7830810Z         },
2026-06-22T01:08:01.7830919Z         "unit": {
2026-06-22T01:08:01.7831040Z           "complete": true,
2026-06-22T01:08:01.7831139Z           "evidence": [
2026-06-22T01:08:01.7831249Z             {
2026-06-22T01:08:01.7831387Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7831505Z               "line": 1169
2026-06-22T01:08:01.7831607Z             },
2026-06-22T01:08:01.7831707Z             {
2026-06-22T01:08:01.7831864Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T01:08:01.7831974Z               "line": 44
2026-06-22T01:08:01.7832079Z             },
2026-06-22T01:08:01.7832184Z             {
2026-06-22T01:08:01.7832341Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T01:08:01.7832450Z               "line": 52
2026-06-22T01:08:01.7832561Z             },
2026-06-22T01:08:01.7832669Z             {
2026-06-22T01:08:01.7832807Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T01:08:01.7832921Z               "line": 57
2026-06-22T01:08:01.7833029Z             },
2026-06-22T01:08:01.7833133Z             {
2026-06-22T01:08:01.7833400Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T01:08:01.7833520Z               "line": 54
2026-06-22T01:08:01.7833615Z             }
2026-06-22T01:08:01.7833715Z           ]
2026-06-22T01:08:01.7833821Z         }
2026-06-22T01:08:01.7833921Z       }
2026-06-22T01:08:01.7834025Z     },
2026-06-22T01:08:01.7834111Z     {
2026-06-22T01:08:01.7834268Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-22T01:08:01.7834508Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-22T01:08:01.7834627Z       "requiredStages": [
2026-06-22T01:08:01.7834736Z         "impl",
2026-06-22T01:08:01.7834940Z         "unit"
2026-06-22T01:08:01.7835041Z       ],
2026-06-22T01:08:01.7835156Z       "stages": {
2026-06-22T01:08:01.7835250Z         "doc": {
2026-06-22T01:08:01.7835366Z           "complete": false,
2026-06-22T01:08:01.7835476Z           "evidence": []
2026-06-22T01:08:01.7835584Z         },
2026-06-22T01:08:01.7835688Z         "impl": {
2026-06-22T01:08:01.7835808Z           "complete": true,
2026-06-22T01:08:01.7835919Z           "evidence": [
2026-06-22T01:08:01.7836029Z             {
2026-06-22T01:08:01.7836178Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7836286Z               "line": 26
2026-06-22T01:08:01.7836397Z             },
2026-06-22T01:08:01.7836502Z             {
2026-06-22T01:08:01.7836649Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7836755Z               "line": 135
2026-06-22T01:08:01.7836860Z             },
2026-06-22T01:08:01.7836959Z             {
2026-06-22T01:08:01.7837117Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:08:01.7837231Z               "line": 26
2026-06-22T01:08:01.7837337Z             },
2026-06-22T01:08:01.7837441Z             {
2026-06-22T01:08:01.7837594Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:08:01.7837709Z               "line": 237
2026-06-22T01:08:01.7837812Z             }
2026-06-22T01:08:01.7837918Z           ]
2026-06-22T01:08:01.7838024Z         },
2026-06-22T01:08:01.7838127Z         "int": {
2026-06-22T01:08:01.7838240Z           "complete": false,
2026-06-22T01:08:01.7838351Z           "evidence": []
2026-06-22T01:08:01.7838453Z         },
2026-06-22T01:08:01.7838562Z         "unit": {
2026-06-22T01:08:01.7838678Z           "complete": true,
2026-06-22T01:08:01.7838796Z           "evidence": [
2026-06-22T01:08:01.7838896Z             {
2026-06-22T01:08:01.7839130Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7839235Z               "line": 161
2026-06-22T01:08:01.7839335Z             },
2026-06-22T01:08:01.7839445Z             {
2026-06-22T01:08:01.7839589Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7839702Z               "line": 170
2026-06-22T01:08:01.7839802Z             },
2026-06-22T01:08:01.7839903Z             {
2026-06-22T01:08:01.7840046Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7840164Z               "line": 179
2026-06-22T01:08:01.7840271Z             },
2026-06-22T01:08:01.7840374Z             {
2026-06-22T01:08:01.7840514Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7840623Z               "line": 190
2026-06-22T01:08:01.7840737Z             },
2026-06-22T01:08:01.7840838Z             {
2026-06-22T01:08:01.7840975Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7841088Z               "line": 199
2026-06-22T01:08:01.7841184Z             },
2026-06-22T01:08:01.7841285Z             {
2026-06-22T01:08:01.7841427Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7841552Z               "line": 216
2026-06-22T01:08:01.7841666Z             },
2026-06-22T01:08:01.7841765Z             {
2026-06-22T01:08:01.7841909Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T01:08:01.7842014Z               "line": 242
2026-06-22T01:08:01.7842119Z             },
2026-06-22T01:08:01.7842329Z             {
2026-06-22T01:08:01.7842468Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.7842577Z               "line": 295
2026-06-22T01:08:01.7842682Z             },
2026-06-22T01:08:01.7842793Z             {
2026-06-22T01:08:01.7842920Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.7843092Z               "line": 244
2026-06-22T01:08:01.7843197Z             },
2026-06-22T01:08:01.7843305Z             {
2026-06-22T01:08:01.7843462Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:08:01.7843561Z               "line": 265
2026-06-22T01:08:01.7843669Z             },
2026-06-22T01:08:01.7843889Z             {
2026-06-22T01:08:01.7844051Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:08:01.7844166Z               "line": 293
2026-06-22T01:08:01.7844271Z             },
2026-06-22T01:08:01.7844371Z             {
2026-06-22T01:08:01.7844524Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:08:01.7844632Z               "line": 317
2026-06-22T01:08:01.7844734Z             },
2026-06-22T01:08:01.7844838Z             {
2026-06-22T01:08:01.7844991Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T01:08:01.7845101Z               "line": 327
2026-06-22T01:08:01.7845215Z             },
2026-06-22T01:08:01.7845315Z             {
2026-06-22T01:08:01.7845472Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.7845586Z               "line": 540
2026-06-22T01:08:01.7845693Z             }
2026-06-22T01:08:01.7845801Z           ]
2026-06-22T01:08:01.7845901Z         }
2026-06-22T01:08:01.7849080Z       }
2026-06-22T01:08:01.7849209Z     },
2026-06-22T01:08:01.7849310Z     {
2026-06-22T01:08:01.7849480Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-22T01:08:01.7854253Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-22T01:08:01.7854473Z       "requiredStages": [],
2026-06-22T01:08:01.7854578Z       "stages": {
2026-06-22T01:08:01.7854679Z         "doc": {
2026-06-22T01:08:01.7854798Z           "complete": false,
2026-06-22T01:08:01.7854936Z           "evidence": []
2026-06-22T01:08:01.7855036Z         },
2026-06-22T01:08:01.7855141Z         "impl": {
2026-06-22T01:08:01.7855246Z           "complete": false,
2026-06-22T01:08:01.7855356Z           "evidence": []
2026-06-22T01:08:01.7855460Z         },
2026-06-22T01:08:01.7855561Z         "int": {
2026-06-22T01:08:01.7855841Z           "complete": false,
2026-06-22T01:08:01.7855952Z           "evidence": []
2026-06-22T01:08:01.7856056Z         },
2026-06-22T01:08:01.7856161Z         "unit": {
2026-06-22T01:08:01.7856276Z           "complete": false,
2026-06-22T01:08:01.7856385Z           "evidence": []
2026-06-22T01:08:01.7856486Z         }
2026-06-22T01:08:01.7856591Z       }
2026-06-22T01:08:01.7856690Z     },
2026-06-22T01:08:01.7856789Z     {
2026-06-22T01:08:01.7856932Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-22T01:08:01.7858490Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-22T01:08:01.7858723Z       "requiredStages": [
2026-06-22T01:08:01.7858829Z         "impl",
2026-06-22T01:08:01.7858937Z         "unit",
2026-06-22T01:08:01.7859111Z         "int"
2026-06-22T01:08:01.7859210Z       ],
2026-06-22T01:08:01.7859318Z       "stages": {
2026-06-22T01:08:01.7859418Z         "doc": {
2026-06-22T01:08:01.7859537Z           "complete": false,
2026-06-22T01:08:01.7859644Z           "evidence": []
2026-06-22T01:08:01.7859745Z         },
2026-06-22T01:08:01.7859846Z         "impl": {
2026-06-22T01:08:01.7859954Z           "complete": true,
2026-06-22T01:08:01.7860089Z           "evidence": [
2026-06-22T01:08:01.7860194Z             {
2026-06-22T01:08:01.7860350Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7860456Z               "line": 538
2026-06-22T01:08:01.7860551Z             },
2026-06-22T01:08:01.7860651Z             {
2026-06-22T01:08:01.7860795Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7860903Z               "line": 641
2026-06-22T01:08:01.7861004Z             },
2026-06-22T01:08:01.7861105Z             {
2026-06-22T01:08:01.7861276Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T01:08:01.7861396Z               "line": 21
2026-06-22T01:08:01.7861494Z             }
2026-06-22T01:08:01.7861586Z           ]
2026-06-22T01:08:01.7861697Z         },
2026-06-22T01:08:01.7861804Z         "int": {
2026-06-22T01:08:01.7861915Z           "complete": true,
2026-06-22T01:08:01.7862026Z           "evidence": [
2026-06-22T01:08:01.7862124Z             {
2026-06-22T01:08:01.7862338Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T01:08:01.7862467Z               "line": 236
2026-06-22T01:08:01.7862566Z             },
2026-06-22T01:08:01.7862673Z             {
2026-06-22T01:08:01.7862843Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T01:08:01.7862954Z               "line": 396
2026-06-22T01:08:01.7863053Z             },
2026-06-22T01:08:01.7863153Z             {
2026-06-22T01:08:01.7863321Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.7863439Z               "line": 1526
2026-06-22T01:08:01.7863539Z             },
2026-06-22T01:08:01.7863645Z             {
2026-06-22T01:08:01.7863811Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.7863937Z               "line": 1678
2026-06-22T01:08:01.7864040Z             }
2026-06-22T01:08:01.7864150Z           ]
2026-06-22T01:08:01.7864252Z         },
2026-06-22T01:08:01.7864359Z         "unit": {
2026-06-22T01:08:01.7864482Z           "complete": true,
2026-06-22T01:08:01.7864593Z           "evidence": [
2026-06-22T01:08:01.7864690Z             {
2026-06-22T01:08:01.7864847Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7864953Z               "line": 887
2026-06-22T01:08:01.7865062Z             }
2026-06-22T01:08:01.7865268Z           ]
2026-06-22T01:08:01.7865376Z         }
2026-06-22T01:08:01.7865477Z       }
2026-06-22T01:08:01.7865578Z     },
2026-06-22T01:08:01.7865677Z     {
2026-06-22T01:08:01.7865826Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-22T01:08:01.7866001Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-22T01:08:01.7866116Z       "requiredStages": [
2026-06-22T01:08:01.7866221Z         "impl",
2026-06-22T01:08:01.7866321Z         "unit"
2026-06-22T01:08:01.7866421Z       ],
2026-06-22T01:08:01.7866527Z       "stages": {
2026-06-22T01:08:01.7866640Z         "doc": {
2026-06-22T01:08:01.7866756Z           "complete": false,
2026-06-22T01:08:01.7866969Z           "evidence": []
2026-06-22T01:08:01.7867071Z         },
2026-06-22T01:08:01.7867171Z         "impl": {
2026-06-22T01:08:01.7867293Z           "complete": true,
2026-06-22T01:08:01.7867402Z           "evidence": [
2026-06-22T01:08:01.7867511Z             {
2026-06-22T01:08:01.7867661Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.7867772Z               "line": 25
2026-06-22T01:08:01.7867877Z             },
2026-06-22T01:08:01.7867976Z             {
2026-06-22T01:08:01.7868111Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.7868216Z               "line": 26
2026-06-22T01:08:01.7868319Z             },
2026-06-22T01:08:01.7868421Z             {
2026-06-22T01:08:01.7868563Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.7868678Z               "line": 159
2026-06-22T01:08:01.7868779Z             }
2026-06-22T01:08:01.7868883Z           ]
2026-06-22T01:08:01.7869051Z         },
2026-06-22T01:08:01.7869160Z         "int": {
2026-06-22T01:08:01.7869278Z           "complete": false,
2026-06-22T01:08:01.7869384Z           "evidence": []
2026-06-22T01:08:01.7869488Z         },
2026-06-22T01:08:01.7869588Z         "unit": {
2026-06-22T01:08:01.7869699Z           "complete": true,
2026-06-22T01:08:01.7869808Z           "evidence": [
2026-06-22T01:08:01.7869902Z             {
2026-06-22T01:08:01.7870040Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.7870148Z               "line": 188
2026-06-22T01:08:01.7870257Z             },
2026-06-22T01:08:01.7870358Z             {
2026-06-22T01:08:01.7870500Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.7870610Z               "line": 240
2026-06-22T01:08:01.7870716Z             },
2026-06-22T01:08:01.7870820Z             {
2026-06-22T01:08:01.7870950Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.7871068Z               "line": 186
2026-06-22T01:08:01.7871163Z             }
2026-06-22T01:08:01.7871274Z           ]
2026-06-22T01:08:01.7871374Z         }
2026-06-22T01:08:01.7871478Z       }
2026-06-22T01:08:01.7871584Z     },
2026-06-22T01:08:01.7871684Z     {
2026-06-22T01:08:01.7871811Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-22T01:08:01.7872003Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-22T01:08:01.7872117Z       "requiredStages": [
2026-06-22T01:08:01.7872224Z         "impl",
2026-06-22T01:08:01.7872332Z         "unit"
2026-06-22T01:08:01.7872432Z       ],
2026-06-22T01:08:01.7872533Z       "stages": {
2026-06-22T01:08:01.7872638Z         "doc": {
2026-06-22T01:08:01.7872755Z           "complete": false,
2026-06-22T01:08:01.7872870Z           "evidence": []
2026-06-22T01:08:01.7872971Z         },
2026-06-22T01:08:01.7873079Z         "impl": {
2026-06-22T01:08:01.7873203Z           "complete": true,
2026-06-22T01:08:01.7873309Z           "evidence": [
2026-06-22T01:08:01.7873413Z             {
2026-06-22T01:08:01.7873557Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7873666Z               "line": 48
2026-06-22T01:08:01.7873771Z             },
2026-06-22T01:08:01.7873872Z             {
2026-06-22T01:08:01.7874018Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7874124Z               "line": 55
2026-06-22T01:08:01.7874329Z             },
2026-06-22T01:08:01.7874429Z             {
2026-06-22T01:08:01.7874581Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7874686Z               "line": 74
2026-06-22T01:08:01.7874797Z             },
2026-06-22T01:08:01.7874905Z             {
2026-06-22T01:08:01.7875042Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7875153Z               "line": 91
2026-06-22T01:08:01.7875250Z             }
2026-06-22T01:08:01.7875359Z           ]
2026-06-22T01:08:01.7875456Z         },
2026-06-22T01:08:01.7875561Z         "int": {
2026-06-22T01:08:01.7875679Z           "complete": false,
2026-06-22T01:08:01.7875885Z           "evidence": []
2026-06-22T01:08:01.7875989Z         },
2026-06-22T01:08:01.7876086Z         "unit": {
2026-06-22T01:08:01.7876209Z           "complete": true,
2026-06-22T01:08:01.7876318Z           "evidence": [
2026-06-22T01:08:01.7876410Z             {
2026-06-22T01:08:01.7876547Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7876652Z               "line": 149
2026-06-22T01:08:01.7876758Z             },
2026-06-22T01:08:01.7876858Z             {
2026-06-22T01:08:01.7876996Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7877101Z               "line": 166
2026-06-22T01:08:01.7877205Z             },
2026-06-22T01:08:01.7877311Z             {
2026-06-22T01:08:01.7877448Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7877563Z               "line": 176
2026-06-22T01:08:01.7877664Z             },
2026-06-22T01:08:01.7877763Z             {
2026-06-22T01:08:01.7877904Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7878010Z               "line": 194
2026-06-22T01:08:01.7878118Z             },
2026-06-22T01:08:01.7878217Z             {
2026-06-22T01:08:01.7878356Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.7878456Z               "line": 207
2026-06-22T01:08:01.7878560Z             }
2026-06-22T01:08:01.7878666Z           ]
2026-06-22T01:08:01.7878766Z         }
2026-06-22T01:08:01.7878875Z       }
2026-06-22T01:08:01.7879057Z     },
2026-06-22T01:08:01.7879161Z     {
2026-06-22T01:08:01.7879306Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-22T01:08:01.7879524Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-22T01:08:01.7879648Z       "requiredStages": [
2026-06-22T01:08:01.7879753Z         "impl",
2026-06-22T01:08:01.7879853Z         "unit"
2026-06-22T01:08:01.7879954Z       ],
2026-06-22T01:08:01.7880063Z       "stages": {
2026-06-22T01:08:01.7880163Z         "doc": {
2026-06-22T01:08:01.7880292Z           "complete": false,
2026-06-22T01:08:01.7880406Z           "evidence": []
2026-06-22T01:08:01.7880500Z         },
2026-06-22T01:08:01.7880605Z         "impl": {
2026-06-22T01:08:01.7880708Z           "complete": true,
2026-06-22T01:08:01.7880812Z           "evidence": [
2026-06-22T01:08:01.7880904Z             {
2026-06-22T01:08:01.7881056Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7881165Z               "line": 466
2026-06-22T01:08:01.7881267Z             },
2026-06-22T01:08:01.7881375Z             {
2026-06-22T01:08:01.7881515Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.7881619Z               "line": 26
2026-06-22T01:08:01.7881719Z             }
2026-06-22T01:08:01.7881825Z           ]
2026-06-22T01:08:01.7881924Z         },
2026-06-22T01:08:01.7882015Z         "int": {
2026-06-22T01:08:01.7882124Z           "complete": false,
2026-06-22T01:08:01.7882225Z           "evidence": []
2026-06-22T01:08:01.7882325Z         },
2026-06-22T01:08:01.7882425Z         "unit": {
2026-06-22T01:08:01.7882549Z           "complete": true,
2026-06-22T01:08:01.7882659Z           "evidence": [
2026-06-22T01:08:01.7882759Z             {
2026-06-22T01:08:01.7882906Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.7883011Z               "line": 150
2026-06-22T01:08:01.7883230Z             },
2026-06-22T01:08:01.7883325Z             {
2026-06-22T01:08:01.7883463Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.7883578Z               "line": 208
2026-06-22T01:08:01.7883677Z             }
2026-06-22T01:08:01.7883773Z           ]
2026-06-22T01:08:01.7883864Z         }
2026-06-22T01:08:01.7883968Z       }
2026-06-22T01:08:01.7884069Z     },
2026-06-22T01:08:01.7884169Z     {
2026-06-22T01:08:01.7884321Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-22T01:08:01.7893285Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T01:08:01.7893701Z       "requiredStages": [
2026-06-22T01:08:01.7893828Z         "impl",
2026-06-22T01:08:01.7893932Z         "unit",
2026-06-22T01:08:01.7894038Z         "int"
2026-06-22T01:08:01.7894138Z       ],
2026-06-22T01:08:01.7894252Z       "stages": {
2026-06-22T01:08:01.7894348Z         "doc": {
2026-06-22T01:08:01.7894467Z           "complete": false,
2026-06-22T01:08:01.7894687Z           "evidence": []
2026-06-22T01:08:01.7894791Z         },
2026-06-22T01:08:01.7894901Z         "impl": {
2026-06-22T01:08:01.7895006Z           "complete": true,
2026-06-22T01:08:01.7895116Z           "evidence": [
2026-06-22T01:08:01.7895215Z             {
2026-06-22T01:08:01.7895368Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.7895473Z               "line": 99
2026-06-22T01:08:01.7895574Z             },
2026-06-22T01:08:01.7895674Z             {
2026-06-22T01:08:01.7895825Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.7895941Z               "line": 201
2026-06-22T01:08:01.7896045Z             }
2026-06-22T01:08:01.7896220Z           ]
2026-06-22T01:08:01.7896325Z         },
2026-06-22T01:08:01.7896418Z         "int": {
2026-06-22T01:08:01.7896538Z           "complete": true,
2026-06-22T01:08:01.7896643Z           "evidence": [
2026-06-22T01:08:01.7896747Z             {
2026-06-22T01:08:01.7896925Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.7897034Z               "line": 737
2026-06-22T01:08:01.7897143Z             }
2026-06-22T01:08:01.7897230Z           ]
2026-06-22T01:08:01.7897339Z         },
2026-06-22T01:08:01.7897438Z         "unit": {
2026-06-22T01:08:01.7897554Z           "complete": true,
2026-06-22T01:08:01.7897659Z           "evidence": [
2026-06-22T01:08:01.7897768Z             {
2026-06-22T01:08:01.7897907Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.7898011Z               "line": 517
2026-06-22T01:08:01.7898116Z             },
2026-06-22T01:08:01.7898222Z             {
2026-06-22T01:08:01.7898363Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.7898474Z               "line": 576
2026-06-22T01:08:01.7898583Z             }
2026-06-22T01:08:01.7898688Z           ]
2026-06-22T01:08:01.7898785Z         }
2026-06-22T01:08:01.7898889Z       }
2026-06-22T01:08:01.7899044Z     },
2026-06-22T01:08:01.7899135Z     {
2026-06-22T01:08:01.7899280Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-22T01:08:01.7900587Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-22T01:08:01.7900712Z       "requiredStages": [
2026-06-22T01:08:01.7900811Z         "doc",
2026-06-22T01:08:01.7900921Z         "impl",
2026-06-22T01:08:01.7901027Z         "unit"
2026-06-22T01:08:01.7901131Z       ],
2026-06-22T01:08:01.7901236Z       "stages": {
2026-06-22T01:08:01.7901341Z         "doc": {
2026-06-22T01:08:01.7901450Z           "complete": true,
2026-06-22T01:08:01.7901564Z           "evidence": [
2026-06-22T01:08:01.7901668Z             {
2026-06-22T01:08:01.7901805Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7901913Z               "line": 214
2026-06-22T01:08:01.7902015Z             }
2026-06-22T01:08:01.7902110Z           ]
2026-06-22T01:08:01.7902214Z         },
2026-06-22T01:08:01.7902315Z         "impl": {
2026-06-22T01:08:01.7902425Z           "complete": true,
2026-06-22T01:08:01.7902529Z           "evidence": [
2026-06-22T01:08:01.7902630Z             {
2026-06-22T01:08:01.7902782Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7902891Z               "line": 56
2026-06-22T01:08:01.7902993Z             },
2026-06-22T01:08:01.7903102Z             {
2026-06-22T01:08:01.7903250Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.7903364Z               "line": 580
2026-06-22T01:08:01.7903473Z             },
2026-06-22T01:08:01.7903579Z             {
2026-06-22T01:08:01.7903735Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7903840Z               "line": 36
2026-06-22T01:08:01.7904035Z             },
2026-06-22T01:08:01.7904146Z             {
2026-06-22T01:08:01.7904290Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7904402Z               "line": 59
2026-06-22T01:08:01.7904507Z             },
2026-06-22T01:08:01.7904608Z             {
2026-06-22T01:08:01.7904755Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7904855Z               "line": 83
2026-06-22T01:08:01.7904965Z             },
2026-06-22T01:08:01.7905065Z             {
2026-06-22T01:08:01.7905204Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7905309Z               "line": 140
2026-06-22T01:08:01.7905499Z             },
2026-06-22T01:08:01.7905604Z             {
2026-06-22T01:08:01.7905742Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7905857Z               "line": 159
2026-06-22T01:08:01.7905962Z             },
2026-06-22T01:08:01.7906066Z             {
2026-06-22T01:08:01.7906219Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7906328Z               "line": 384
2026-06-22T01:08:01.7906434Z             },
2026-06-22T01:08:01.7906534Z             {
2026-06-22T01:08:01.7906680Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7906790Z               "line": 535
2026-06-22T01:08:01.7906894Z             },
2026-06-22T01:08:01.7906997Z             {
2026-06-22T01:08:01.7907136Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7907246Z               "line": 581
2026-06-22T01:08:01.7907350Z             },
2026-06-22T01:08:01.7907446Z             {
2026-06-22T01:08:01.7907594Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.7907703Z               "line": 300
2026-06-22T01:08:01.7907809Z             },
2026-06-22T01:08:01.7907913Z             {
2026-06-22T01:08:01.7908037Z               "path": "crates/spt/src/main.rs",
2026-06-22T01:08:01.7908147Z               "line": 42
2026-06-22T01:08:01.7908242Z             }
2026-06-22T01:08:01.7908342Z           ]
2026-06-22T01:08:01.7908448Z         },
2026-06-22T01:08:01.7908552Z         "int": {
2026-06-22T01:08:01.7908667Z           "complete": false,
2026-06-22T01:08:01.7908782Z           "evidence": []
2026-06-22T01:08:01.7908886Z         },
2026-06-22T01:08:01.7909059Z         "unit": {
2026-06-22T01:08:01.7909181Z           "complete": true,
2026-06-22T01:08:01.7909297Z           "evidence": [
2026-06-22T01:08:01.7909402Z             {
2026-06-22T01:08:01.7909547Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7909667Z               "line": 813
2026-06-22T01:08:01.7909766Z             },
2026-06-22T01:08:01.7909869Z             {
2026-06-22T01:08:01.7910022Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7910132Z               "line": 854
2026-06-22T01:08:01.7910241Z             },
2026-06-22T01:08:01.7910342Z             {
2026-06-22T01:08:01.7910499Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.7910604Z               "line": 928
2026-06-22T01:08:01.7910714Z             }
2026-06-22T01:08:01.7910813Z           ]
2026-06-22T01:08:01.7910904Z         }
2026-06-22T01:08:01.7911015Z       }
2026-06-22T01:08:01.7911119Z     },
2026-06-22T01:08:01.7911223Z     {
2026-06-22T01:08:01.7911376Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-22T01:08:01.7916231Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-22T01:08:01.7916640Z       "requiredStages": [
2026-06-22T01:08:01.7916751Z         "impl",
2026-06-22T01:08:01.7916860Z         "unit",
2026-06-22T01:08:01.7916960Z         "int"
2026-06-22T01:08:01.7917066Z       ],
2026-06-22T01:08:01.7917174Z       "stages": {
2026-06-22T01:08:01.7917269Z         "doc": {
2026-06-22T01:08:01.7917379Z           "complete": false,
2026-06-22T01:08:01.7917496Z           "evidence": []
2026-06-22T01:08:01.7917600Z         },
2026-06-22T01:08:01.7917701Z         "impl": {
2026-06-22T01:08:01.7917834Z           "complete": true,
2026-06-22T01:08:01.7917944Z           "evidence": [
2026-06-22T01:08:01.7918050Z             {
2026-06-22T01:08:01.7918206Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.7918312Z               "line": 204
2026-06-22T01:08:01.7918417Z             }
2026-06-22T01:08:01.7918525Z           ]
2026-06-22T01:08:01.7918637Z         },
2026-06-22T01:08:01.7918731Z         "int": {
2026-06-22T01:08:01.7918835Z           "complete": true,
2026-06-22T01:08:01.7919008Z           "evidence": [
2026-06-22T01:08:01.7919146Z             {
2026-06-22T01:08:01.7919308Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T01:08:01.7919422Z               "line": 296
2026-06-22T01:08:01.7919522Z             }
2026-06-22T01:08:01.7919623Z           ]
2026-06-22T01:08:01.7919727Z         },
2026-06-22T01:08:01.7919832Z         "unit": {
2026-06-22T01:08:01.7919943Z           "complete": true,
2026-06-22T01:08:01.7920051Z           "evidence": [
2026-06-22T01:08:01.7920160Z             {
2026-06-22T01:08:01.7920312Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.7920415Z               "line": 467
2026-06-22T01:08:01.7920520Z             }
2026-06-22T01:08:01.7920612Z           ]
2026-06-22T01:08:01.7920706Z         }
2026-06-22T01:08:01.7920821Z       }
2026-06-22T01:08:01.7920917Z     },
2026-06-22T01:08:01.7921012Z     {
2026-06-22T01:08:01.7921135Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-22T01:08:01.7924466Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-22T01:08:01.7924785Z       "requiredStages": [
2026-06-22T01:08:01.7924890Z         "impl",
2026-06-22T01:08:01.7925000Z         "unit",
2026-06-22T01:08:01.7925096Z         "int"
2026-06-22T01:08:01.7925189Z       ],
2026-06-22T01:08:01.7925300Z       "stages": {
2026-06-22T01:08:01.7925406Z         "doc": {
2026-06-22T01:08:01.7925518Z           "complete": false,
2026-06-22T01:08:01.7925738Z           "evidence": []
2026-06-22T01:08:01.7925847Z         },
2026-06-22T01:08:01.7925956Z         "impl": {
2026-06-22T01:08:01.7926067Z           "complete": true,
2026-06-22T01:08:01.7926180Z           "evidence": [
2026-06-22T01:08:01.7926286Z             {
2026-06-22T01:08:01.7926462Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.7926562Z               "line": 123
2026-06-22T01:08:01.7926673Z             },
2026-06-22T01:08:01.7926782Z             {
2026-06-22T01:08:01.7926915Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:08:01.7927030Z               "line": 134
2026-06-22T01:08:01.7927129Z             }
2026-06-22T01:08:01.7927235Z           ]
2026-06-22T01:08:01.7927331Z         },
2026-06-22T01:08:01.7927434Z         "int": {
2026-06-22T01:08:01.7927554Z           "complete": true,
2026-06-22T01:08:01.7927659Z           "evidence": [
2026-06-22T01:08:01.7927768Z             {
2026-06-22T01:08:01.7927925Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.7928033Z               "line": 312
2026-06-22T01:08:01.7928136Z             },
2026-06-22T01:08:01.7928247Z             {
2026-06-22T01:08:01.7928390Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.7928499Z               "line": 525
2026-06-22T01:08:01.7928605Z             }
2026-06-22T01:08:01.7928709Z           ]
2026-06-22T01:08:01.7928813Z         },
2026-06-22T01:08:01.7928915Z         "unit": {
2026-06-22T01:08:01.7929109Z           "complete": true,
2026-06-22T01:08:01.7929220Z           "evidence": [
2026-06-22T01:08:01.7929320Z             {
2026-06-22T01:08:01.7929472Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.7929582Z               "line": 250
2026-06-22T01:08:01.7929686Z             }
2026-06-22T01:08:01.7929787Z           ]
2026-06-22T01:08:01.7929888Z         }
2026-06-22T01:08:01.7929992Z       }
2026-06-22T01:08:01.7930082Z     },
2026-06-22T01:08:01.7930188Z     {
2026-06-22T01:08:01.7930330Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-22T01:08:01.7932058Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-22T01:08:01.7932196Z       "requiredStages": [
2026-06-22T01:08:01.7932305Z         "impl",
2026-06-22T01:08:01.7932407Z         "unit"
2026-06-22T01:08:01.7932506Z       ],
2026-06-22T01:08:01.7932615Z       "stages": {
2026-06-22T01:08:01.7932727Z         "doc": {
2026-06-22T01:08:01.7932854Z           "complete": false,
2026-06-22T01:08:01.7932964Z           "evidence": []
2026-06-22T01:08:01.7933065Z         },
2026-06-22T01:08:01.7933178Z         "impl": {
2026-06-22T01:08:01.7933287Z           "complete": true,
2026-06-22T01:08:01.7933396Z           "evidence": [
2026-06-22T01:08:01.7933504Z             {
2026-06-22T01:08:01.7933787Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7933899Z               "line": 31
2026-06-22T01:08:01.7933991Z             }
2026-06-22T01:08:01.7934100Z           ]
2026-06-22T01:08:01.7934195Z         },
2026-06-22T01:08:01.7934291Z         "int": {
2026-06-22T01:08:01.7934410Z           "complete": false,
2026-06-22T01:08:01.7934514Z           "evidence": []
2026-06-22T01:08:01.7934621Z         },
2026-06-22T01:08:01.7934730Z         "unit": {
2026-06-22T01:08:01.7934843Z           "complete": true,
2026-06-22T01:08:01.7934945Z           "evidence": [
2026-06-22T01:08:01.7935054Z             {
2026-06-22T01:08:01.7935312Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7935425Z               "line": 181
2026-06-22T01:08:01.7935531Z             }
2026-06-22T01:08:01.7935632Z           ]
2026-06-22T01:08:01.7935740Z         }
2026-06-22T01:08:01.7935841Z       }
2026-06-22T01:08:01.7935942Z     },
2026-06-22T01:08:01.7936055Z     {
2026-06-22T01:08:01.7936197Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-22T01:08:01.7936388Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-22T01:08:01.7936497Z       "requiredStages": [
2026-06-22T01:08:01.7936608Z         "impl",
2026-06-22T01:08:01.7936712Z         "unit"
2026-06-22T01:08:01.7936821Z       ],
2026-06-22T01:08:01.7936932Z       "stages": {
2026-06-22T01:08:01.7937037Z         "doc": {
2026-06-22T01:08:01.7937156Z           "complete": false,
2026-06-22T01:08:01.7937270Z           "evidence": []
2026-06-22T01:08:01.7937375Z         },
2026-06-22T01:08:01.7937480Z         "impl": {
2026-06-22T01:08:01.7937609Z           "complete": true,
2026-06-22T01:08:01.7937723Z           "evidence": [
2026-06-22T01:08:01.7937824Z             {
2026-06-22T01:08:01.7937985Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7938086Z               "line": 49
2026-06-22T01:08:01.7938192Z             },
2026-06-22T01:08:01.7938294Z             {
2026-06-22T01:08:01.7938447Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7938565Z               "line": 81
2026-06-22T01:08:01.7938669Z             }
2026-06-22T01:08:01.7938773Z           ]
2026-06-22T01:08:01.7938879Z         },
2026-06-22T01:08:01.7939054Z         "int": {
2026-06-22T01:08:01.7939174Z           "complete": false,
2026-06-22T01:08:01.7939288Z           "evidence": []
2026-06-22T01:08:01.7939388Z         },
2026-06-22T01:08:01.7939494Z         "unit": {
2026-06-22T01:08:01.7939603Z           "complete": true,
2026-06-22T01:08:01.7939713Z           "evidence": [
2026-06-22T01:08:01.7939823Z             {
2026-06-22T01:08:01.7939975Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7940086Z               "line": 156
2026-06-22T01:08:01.7940194Z             },
2026-06-22T01:08:01.7940294Z             {
2026-06-22T01:08:01.7940439Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7940547Z               "line": 173
2026-06-22T01:08:01.7940642Z             },
2026-06-22T01:08:01.7940744Z             {
2026-06-22T01:08:01.7940900Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7941025Z               "line": 196
2026-06-22T01:08:01.7941129Z             }
2026-06-22T01:08:01.7941233Z           ]
2026-06-22T01:08:01.7941337Z         }
2026-06-22T01:08:01.7941441Z       }
2026-06-22T01:08:01.7941545Z     },
2026-06-22T01:08:01.7941650Z     {
2026-06-22T01:08:01.7941798Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-22T01:08:01.7942004Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-22T01:08:01.7942118Z       "requiredStages": [
2026-06-22T01:08:01.7942217Z         "impl",
2026-06-22T01:08:01.7942328Z         "unit"
2026-06-22T01:08:01.7942418Z       ],
2026-06-22T01:08:01.7942532Z       "stages": {
2026-06-22T01:08:01.7942638Z         "doc": {
2026-06-22T01:08:01.7942756Z           "complete": false,
2026-06-22T01:08:01.7942972Z           "evidence": []
2026-06-22T01:08:01.7943133Z         },
2026-06-22T01:08:01.7943248Z         "impl": {
2026-06-22T01:08:01.7943362Z           "complete": true,
2026-06-22T01:08:01.7943477Z           "evidence": [
2026-06-22T01:08:01.7943573Z             {
2026-06-22T01:08:01.7943724Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7943847Z               "line": 120
2026-06-22T01:08:01.7943947Z             }
2026-06-22T01:08:01.7944050Z           ]
2026-06-22T01:08:01.7944149Z         },
2026-06-22T01:08:01.7944251Z         "int": {
2026-06-22T01:08:01.7944375Z           "complete": false,
2026-06-22T01:08:01.7944474Z           "evidence": []
2026-06-22T01:08:01.7944675Z         },
2026-06-22T01:08:01.7944779Z         "unit": {
2026-06-22T01:08:01.7944899Z           "complete": true,
2026-06-22T01:08:01.7945009Z           "evidence": [
2026-06-22T01:08:01.7945112Z             {
2026-06-22T01:08:01.7945266Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7945385Z               "line": 212
2026-06-22T01:08:01.7945490Z             },
2026-06-22T01:08:01.7945595Z             {
2026-06-22T01:08:01.7945737Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7945844Z               "line": 221
2026-06-22T01:08:01.7945957Z             },
2026-06-22T01:08:01.7946062Z             {
2026-06-22T01:08:01.7946377Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7946502Z               "line": 229
2026-06-22T01:08:01.7946605Z             },
2026-06-22T01:08:01.7946709Z             {
2026-06-22T01:08:01.7946854Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7946972Z               "line": 239
2026-06-22T01:08:01.7947086Z             },
2026-06-22T01:08:01.7947182Z             {
2026-06-22T01:08:01.7947329Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T01:08:01.7947440Z               "line": 249
2026-06-22T01:08:01.7947544Z             }
2026-06-22T01:08:01.7947653Z           ]
2026-06-22T01:08:01.7947755Z         }
2026-06-22T01:08:01.7947859Z       }
2026-06-22T01:08:01.7947958Z     },
2026-06-22T01:08:01.7948060Z     {
2026-06-22T01:08:01.7948197Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-22T01:08:01.7948389Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-22T01:08:01.7948498Z       "requiredStages": [
2026-06-22T01:08:01.7948602Z         "impl",
2026-06-22T01:08:01.7948713Z         "unit"
2026-06-22T01:08:01.7948813Z       ],
2026-06-22T01:08:01.7948926Z       "stages": {
2026-06-22T01:08:01.7949112Z         "doc": {
2026-06-22T01:08:01.7949238Z           "complete": false,
2026-06-22T01:08:01.7949352Z           "evidence": []
2026-06-22T01:08:01.7949449Z         },
2026-06-22T01:08:01.7949557Z         "impl": {
2026-06-22T01:08:01.7949677Z           "complete": true,
2026-06-22T01:08:01.7949787Z           "evidence": [
2026-06-22T01:08:01.7949886Z             {
2026-06-22T01:08:01.7950031Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.7950145Z               "line": 14
2026-06-22T01:08:01.7950249Z             },
2026-06-22T01:08:01.7950355Z             {
2026-06-22T01:08:01.7950483Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.7950597Z               "line": 63
2026-06-22T01:08:01.7950698Z             }
2026-06-22T01:08:01.7950802Z           ]
2026-06-22T01:08:01.7950907Z         },
2026-06-22T01:08:01.7951008Z         "int": {
2026-06-22T01:08:01.7953828Z           "complete": false,
2026-06-22T01:08:01.7953979Z           "evidence": []
2026-06-22T01:08:01.7954079Z         },
2026-06-22T01:08:01.7954181Z         "unit": {
2026-06-22T01:08:01.7954308Z           "complete": true,
2026-06-22T01:08:01.7954416Z           "evidence": [
2026-06-22T01:08:01.7954526Z             {
2026-06-22T01:08:01.7954677Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.7954791Z               "line": 164
2026-06-22T01:08:01.7954897Z             },
2026-06-22T01:08:01.7955131Z             {
2026-06-22T01:08:01.7955273Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.7955387Z               "line": 198
2026-06-22T01:08:01.7955492Z             },
2026-06-22T01:08:01.7955597Z             {
2026-06-22T01:08:01.7955731Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.7955845Z               "line": 220
2026-06-22T01:08:01.7955950Z             }
2026-06-22T01:08:01.7956050Z           ]
2026-06-22T01:08:01.7956146Z         }
2026-06-22T01:08:01.7956241Z       }
2026-06-22T01:08:01.7956346Z     },
2026-06-22T01:08:01.7956432Z     {
2026-06-22T01:08:01.7956565Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-22T01:08:01.7958071Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-22T01:08:01.7958204Z       "requiredStages": [],
2026-06-22T01:08:01.7958315Z       "stages": {
2026-06-22T01:08:01.7958415Z         "doc": {
2026-06-22T01:08:01.7958537Z           "complete": true,
2026-06-22T01:08:01.7958635Z           "evidence": [
2026-06-22T01:08:01.7958743Z             {
2026-06-22T01:08:01.7958886Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.7959077Z               "line": 165
2026-06-22T01:08:01.7959177Z             }
2026-06-22T01:08:01.7959274Z           ]
2026-06-22T01:08:01.7959401Z         },
2026-06-22T01:08:01.7959500Z         "impl": {
2026-06-22T01:08:01.7959619Z           "complete": false,
2026-06-22T01:08:01.7959718Z           "evidence": []
2026-06-22T01:08:01.7959817Z         },
2026-06-22T01:08:01.7959927Z         "int": {
2026-06-22T01:08:01.7960043Z           "complete": false,
2026-06-22T01:08:01.7960175Z           "evidence": []
2026-06-22T01:08:01.7960281Z         },
2026-06-22T01:08:01.7960380Z         "unit": {
2026-06-22T01:08:01.7960494Z           "complete": false,
2026-06-22T01:08:01.7960591Z           "evidence": []
2026-06-22T01:08:01.7960695Z         }
2026-06-22T01:08:01.7960794Z       }
2026-06-22T01:08:01.7960901Z     },
2026-06-22T01:08:01.7960995Z     {
2026-06-22T01:08:01.7961138Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-22T01:08:01.7961391Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-22T01:08:01.7961502Z       "requiredStages": [
2026-06-22T01:08:01.7961611Z         "impl",
2026-06-22T01:08:01.7961715Z         "unit"
2026-06-22T01:08:01.7961807Z       ],
2026-06-22T01:08:01.7961902Z       "stages": {
2026-06-22T01:08:01.7962011Z         "doc": {
2026-06-22T01:08:01.7962131Z           "complete": false,
2026-06-22T01:08:01.7962241Z           "evidence": []
2026-06-22T01:08:01.7962344Z         },
2026-06-22T01:08:01.7962453Z         "impl": {
2026-06-22T01:08:01.7962576Z           "complete": true,
2026-06-22T01:08:01.7962675Z           "evidence": [
2026-06-22T01:08:01.7962780Z             {
2026-06-22T01:08:01.7962938Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7963042Z               "line": 76
2026-06-22T01:08:01.7963153Z             },
2026-06-22T01:08:01.7963253Z             {
2026-06-22T01:08:01.7963395Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7963510Z               "line": 167
2026-06-22T01:08:01.7963609Z             },
2026-06-22T01:08:01.7963715Z             {
2026-06-22T01:08:01.7963852Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7963967Z               "line": 233
2026-06-22T01:08:01.7964068Z             },
2026-06-22T01:08:01.7964177Z             {
2026-06-22T01:08:01.7964320Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7964431Z               "line": 272
2026-06-22T01:08:01.7964644Z             }
2026-06-22T01:08:01.7964746Z           ]
2026-06-22T01:08:01.7964849Z         },
2026-06-22T01:08:01.7964952Z         "int": {
2026-06-22T01:08:01.7965073Z           "complete": false,
2026-06-22T01:08:01.7965175Z           "evidence": []
2026-06-22T01:08:01.7965274Z         },
2026-06-22T01:08:01.7965376Z         "unit": {
2026-06-22T01:08:01.7965485Z           "complete": true,
2026-06-22T01:08:01.7965594Z           "evidence": [
2026-06-22T01:08:01.7965691Z             {
2026-06-22T01:08:01.7965833Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7965937Z               "line": 321
2026-06-22T01:08:01.7966043Z             },
2026-06-22T01:08:01.7966242Z             {
2026-06-22T01:08:01.7966386Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7966505Z               "line": 329
2026-06-22T01:08:01.7966606Z             },
2026-06-22T01:08:01.7966710Z             {
2026-06-22T01:08:01.7966844Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7966964Z               "line": 356
2026-06-22T01:08:01.7967063Z             },
2026-06-22T01:08:01.7967163Z             {
2026-06-22T01:08:01.7967289Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7967392Z               "line": 395
2026-06-22T01:08:01.7967497Z             },
2026-06-22T01:08:01.7967594Z             {
2026-06-22T01:08:01.7967725Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7967839Z               "line": 406
2026-06-22T01:08:01.7967940Z             },
2026-06-22T01:08:01.7968031Z             {
2026-06-22T01:08:01.7968168Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7968288Z               "line": 418
2026-06-22T01:08:01.7968388Z             },
2026-06-22T01:08:01.7968487Z             {
2026-06-22T01:08:01.7968622Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T01:08:01.7968731Z               "line": 442
2026-06-22T01:08:01.7968836Z             }
2026-06-22T01:08:01.7968941Z           ]
2026-06-22T01:08:01.7969103Z         }
2026-06-22T01:08:01.7969204Z       }
2026-06-22T01:08:01.7969303Z     },
2026-06-22T01:08:01.7969413Z     {
2026-06-22T01:08:01.7969538Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-22T01:08:01.7969718Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-22T01:08:01.7969829Z       "requiredStages": [
2026-06-22T01:08:01.7969929Z         "impl",
2026-06-22T01:08:01.7970032Z         "int"
2026-06-22T01:08:01.7970132Z       ],
2026-06-22T01:08:01.7970236Z       "stages": {
2026-06-22T01:08:01.7970339Z         "doc": {
2026-06-22T01:08:01.7970449Z           "complete": false,
2026-06-22T01:08:01.7970559Z           "evidence": []
2026-06-22T01:08:01.7970668Z         },
2026-06-22T01:08:01.7970768Z         "impl": {
2026-06-22T01:08:01.7970879Z           "complete": true,
2026-06-22T01:08:01.7970983Z           "evidence": [
2026-06-22T01:08:01.7971078Z             {
2026-06-22T01:08:01.7971226Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.7971335Z               "line": 22
2026-06-22T01:08:01.7971432Z             }
2026-06-22T01:08:01.7971527Z           ]
2026-06-22T01:08:01.7971632Z         },
2026-06-22T01:08:01.7971737Z         "int": {
2026-06-22T01:08:01.7971842Z           "complete": true,
2026-06-22T01:08:01.7971942Z           "evidence": [
2026-06-22T01:08:01.7972047Z             {
2026-06-22T01:08:01.7972199Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-22T01:08:01.7972308Z               "line": 18
2026-06-22T01:08:01.7972410Z             }
2026-06-22T01:08:01.7972514Z           ]
2026-06-22T01:08:01.7972609Z         },
2026-06-22T01:08:01.7972715Z         "unit": {
2026-06-22T01:08:01.7972829Z           "complete": false,
2026-06-22T01:08:01.7972937Z           "evidence": []
2026-06-22T01:08:01.7973033Z         }
2026-06-22T01:08:01.7973132Z       }
2026-06-22T01:08:01.7973235Z     },
2026-06-22T01:08:01.7973336Z     {
2026-06-22T01:08:01.7973484Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-22T01:08:01.7973799Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-22T01:08:01.7973921Z       "requiredStages": [
2026-06-22T01:08:01.7974028Z         "impl",
2026-06-22T01:08:01.7974137Z         "unit"
2026-06-22T01:08:01.7974236Z       ],
2026-06-22T01:08:01.7974342Z       "stages": {
2026-06-22T01:08:01.7974436Z         "doc": {
2026-06-22T01:08:01.7974551Z           "complete": false,
2026-06-22T01:08:01.7974652Z           "evidence": []
2026-06-22T01:08:01.7974756Z         },
2026-06-22T01:08:01.7974861Z         "impl": {
2026-06-22T01:08:01.7974967Z           "complete": true,
2026-06-22T01:08:01.7975176Z           "evidence": [
2026-06-22T01:08:01.7975282Z             {
2026-06-22T01:08:01.7975433Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7975546Z               "line": 465
2026-06-22T01:08:01.7975642Z             },
2026-06-22T01:08:01.7975745Z             {
2026-06-22T01:08:01.7975888Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.7976003Z               "line": 27
2026-06-22T01:08:01.7976107Z             }
2026-06-22T01:08:01.7976207Z           ]
2026-06-22T01:08:01.7976313Z         },
2026-06-22T01:08:01.7976412Z         "int": {
2026-06-22T01:08:01.7976527Z           "complete": false,
2026-06-22T01:08:01.7976636Z           "evidence": []
2026-06-22T01:08:01.7976736Z         },
2026-06-22T01:08:01.7976842Z         "unit": {
2026-06-22T01:08:01.7976951Z           "complete": true,
2026-06-22T01:08:01.7977065Z           "evidence": [
2026-06-22T01:08:01.7977156Z             {
2026-06-22T01:08:01.7977308Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.7977418Z               "line": 990
2026-06-22T01:08:01.7977520Z             },
2026-06-22T01:08:01.7977623Z             {
2026-06-22T01:08:01.7977757Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.7977868Z               "line": 181
2026-06-22T01:08:01.7977971Z             }
2026-06-22T01:08:01.7978077Z           ]
2026-06-22T01:08:01.7978168Z         }
2026-06-22T01:08:01.7978262Z       }
2026-06-22T01:08:01.7978366Z     },
2026-06-22T01:08:01.7978457Z     {
2026-06-22T01:08:01.7978591Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-22T01:08:01.7978786Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-22T01:08:01.7978920Z       "requiredStages": [
2026-06-22T01:08:01.7979149Z         "impl",
2026-06-22T01:08:01.7979249Z         "unit"
2026-06-22T01:08:01.7979348Z       ],
2026-06-22T01:08:01.7979455Z       "stages": {
2026-06-22T01:08:01.7979577Z         "doc": {
2026-06-22T01:08:01.7979701Z           "complete": false,
2026-06-22T01:08:01.7979811Z           "evidence": []
2026-06-22T01:08:01.7979921Z         },
2026-06-22T01:08:01.7980026Z         "impl": {
2026-06-22T01:08:01.7980140Z           "complete": true,
2026-06-22T01:08:01.7980249Z           "evidence": [
2026-06-22T01:08:01.7980345Z             {
2026-06-22T01:08:01.7980502Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7980616Z               "line": 73
2026-06-22T01:08:01.7980726Z             },
2026-06-22T01:08:01.7980829Z             {
2026-06-22T01:08:01.7980975Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7981081Z               "line": 972
2026-06-22T01:08:01.7981186Z             },
2026-06-22T01:08:01.7981295Z             {
2026-06-22T01:08:01.7981439Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7981553Z               "line": 20
2026-06-22T01:08:01.7981653Z             },
2026-06-22T01:08:01.7981754Z             {
2026-06-22T01:08:01.7981896Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7982007Z               "line": 100
2026-06-22T01:08:01.7982111Z             },
2026-06-22T01:08:01.7982206Z             {
2026-06-22T01:08:01.7982340Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.7982454Z               "line": 619
2026-06-22T01:08:01.7982660Z             },
2026-06-22T01:08:01.7982759Z             {
2026-06-22T01:08:01.7982912Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:08:01.7983032Z               "line": 68
2026-06-22T01:08:01.7983131Z             },
2026-06-22T01:08:01.7983237Z             {
2026-06-22T01:08:01.7983389Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:08:01.7983492Z               "line": 80
2026-06-22T01:08:01.7983588Z             }
2026-06-22T01:08:01.7983687Z           ]
2026-06-22T01:08:01.7983795Z         },
2026-06-22T01:08:01.7983900Z         "int": {
2026-06-22T01:08:01.7984010Z           "complete": true,
2026-06-22T01:08:01.7984210Z           "evidence": [
2026-06-22T01:08:01.7984316Z             {
2026-06-22T01:08:01.7984457Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T01:08:01.7984564Z               "line": 44
2026-06-22T01:08:01.7984673Z             }
2026-06-22T01:08:01.7984772Z           ]
2026-06-22T01:08:01.7984874Z         },
2026-06-22T01:08:01.7984973Z         "unit": {
2026-06-22T01:08:01.7985087Z           "complete": true,
2026-06-22T01:08:01.7985193Z           "evidence": [
2026-06-22T01:08:01.7985298Z             {
2026-06-22T01:08:01.7985450Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7985556Z               "line": 1181
2026-06-22T01:08:01.7985664Z             },
2026-06-22T01:08:01.7985765Z             {
2026-06-22T01:08:01.7985909Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.7986021Z               "line": 1197
2026-06-22T01:08:01.7986136Z             },
2026-06-22T01:08:01.7986245Z             {
2026-06-22T01:08:01.7986386Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.7986505Z               "line": 2706
2026-06-22T01:08:01.7986597Z             },
2026-06-22T01:08:01.7986691Z             {
2026-06-22T01:08:01.7986826Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7986935Z               "line": 152
2026-06-22T01:08:01.7987034Z             },
2026-06-22T01:08:01.7987131Z             {
2026-06-22T01:08:01.7987278Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7987377Z               "line": 175
2026-06-22T01:08:01.7987488Z             },
2026-06-22T01:08:01.7987588Z             {
2026-06-22T01:08:01.7987731Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7987836Z               "line": 186
2026-06-22T01:08:01.7987940Z             },
2026-06-22T01:08:01.7988046Z             {
2026-06-22T01:08:01.7988183Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7988298Z               "line": 202
2026-06-22T01:08:01.7988394Z             },
2026-06-22T01:08:01.7988498Z             {
2026-06-22T01:08:01.7988637Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T01:08:01.7988748Z               "line": 216
2026-06-22T01:08:01.7988860Z             },
2026-06-22T01:08:01.7989046Z             {
2026-06-22T01:08:01.7989188Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T01:08:01.7989307Z               "line": 137
2026-06-22T01:08:01.7989404Z             },
2026-06-22T01:08:01.7989503Z             {
2026-06-22T01:08:01.7989652Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.7989766Z               "line": 8152
2026-06-22T01:08:01.7989865Z             },
2026-06-22T01:08:01.7989971Z             {
2026-06-22T01:08:01.7990104Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T01:08:01.7990213Z               "line": 30
2026-06-22T01:08:01.7990315Z             },
2026-06-22T01:08:01.7990419Z             {
2026-06-22T01:08:01.7990562Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T01:08:01.7990663Z               "line": 73
2026-06-22T01:08:01.7990766Z             }
2026-06-22T01:08:01.7990867Z           ]
2026-06-22T01:08:01.7990964Z         }
2026-06-22T01:08:01.7991062Z       }
2026-06-22T01:08:01.7991266Z     },
2026-06-22T01:08:01.7991366Z     {
2026-06-22T01:08:01.7991511Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-22T01:08:01.7995505Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-22T01:08:01.7995801Z       "requiredStages": [
2026-06-22T01:08:01.7995914Z         "impl",
2026-06-22T01:08:01.7996025Z         "unit",
2026-06-22T01:08:01.7996125Z         "int"
2026-06-22T01:08:01.7996258Z       ],
2026-06-22T01:08:01.7996369Z       "stages": {
2026-06-22T01:08:01.7996478Z         "doc": {
2026-06-22T01:08:01.7996591Z           "complete": false,
2026-06-22T01:08:01.7996710Z           "evidence": []
2026-06-22T01:08:01.7996823Z         },
2026-06-22T01:08:01.7996922Z         "impl": {
2026-06-22T01:08:01.7997060Z           "complete": true,
2026-06-22T01:08:01.7997171Z           "evidence": [
2026-06-22T01:08:01.7997275Z             {
2026-06-22T01:08:01.7997428Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7997547Z               "line": 510
2026-06-22T01:08:01.7997647Z             },
2026-06-22T01:08:01.7997748Z             {
2026-06-22T01:08:01.7997894Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7998005Z               "line": 704
2026-06-22T01:08:01.7998138Z             }
2026-06-22T01:08:01.7998248Z           ]
2026-06-22T01:08:01.7998349Z         },
2026-06-22T01:08:01.7998458Z         "int": {
2026-06-22T01:08:01.7998586Z           "complete": true,
2026-06-22T01:08:01.7998702Z           "evidence": [
2026-06-22T01:08:01.7998811Z             {
2026-06-22T01:08:01.7999049Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.7999168Z               "line": 1119
2026-06-22T01:08:01.7999274Z             },
2026-06-22T01:08:01.7999378Z             {
2026-06-22T01:08:01.7999538Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T01:08:01.7999649Z               "line": 312
2026-06-22T01:08:01.7999749Z             }
2026-06-22T01:08:01.7999853Z           ]
2026-06-22T01:08:01.7999950Z         },
2026-06-22T01:08:01.8000055Z         "unit": {
2026-06-22T01:08:01.8000163Z           "complete": true,
2026-06-22T01:08:01.8000279Z           "evidence": [
2026-06-22T01:08:01.8000384Z             {
2026-06-22T01:08:01.8000531Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8000636Z               "line": 821
2026-06-22T01:08:01.8000740Z             }
2026-06-22T01:08:01.8000846Z           ]
2026-06-22T01:08:01.8000946Z         }
2026-06-22T01:08:01.8001046Z       }
2026-06-22T01:08:01.8001146Z     },
2026-06-22T01:08:01.8001243Z     {
2026-06-22T01:08:01.8001379Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-22T01:08:01.8001665Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-22T01:08:01.8001893Z       "requiredStages": [
2026-06-22T01:08:01.8002006Z         "impl",
2026-06-22T01:08:01.8002100Z         "unit"
2026-06-22T01:08:01.8002197Z       ],
2026-06-22T01:08:01.8002292Z       "stages": {
2026-06-22T01:08:01.8002396Z         "doc": {
2026-06-22T01:08:01.8002512Z           "complete": true,
2026-06-22T01:08:01.8002621Z           "evidence": [
2026-06-22T01:08:01.8002730Z             {
2026-06-22T01:08:01.8002869Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8002968Z               "line": 133
2026-06-22T01:08:01.8003064Z             }
2026-06-22T01:08:01.8003265Z           ]
2026-06-22T01:08:01.8003369Z         },
2026-06-22T01:08:01.8003475Z         "impl": {
2026-06-22T01:08:01.8003584Z           "complete": true,
2026-06-22T01:08:01.8003688Z           "evidence": [
2026-06-22T01:08:01.8003790Z             {
2026-06-22T01:08:01.8003927Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8004033Z               "line": 65
2026-06-22T01:08:01.8004128Z             },
2026-06-22T01:08:01.8004237Z             {
2026-06-22T01:08:01.8004372Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8004471Z               "line": 17
2026-06-22T01:08:01.8004585Z             },
2026-06-22T01:08:01.8004680Z             {
2026-06-22T01:08:01.8004835Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.8004944Z               "line": 146
2026-06-22T01:08:01.8005054Z             },
2026-06-22T01:08:01.8005164Z             {
2026-06-22T01:08:01.8005306Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8005422Z               "line": 310
2026-06-22T01:08:01.8005530Z             },
2026-06-22T01:08:01.8005626Z             {
2026-06-22T01:08:01.8005770Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8005883Z               "line": 441
2026-06-22T01:08:01.8005989Z             },
2026-06-22T01:08:01.8006084Z             {
2026-06-22T01:08:01.8006231Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.8006342Z               "line": 32
2026-06-22T01:08:01.8006451Z             },
2026-06-22T01:08:01.8006546Z             {
2026-06-22T01:08:01.8006690Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8006808Z               "line": 1283
2026-06-22T01:08:01.8006914Z             },
2026-06-22T01:08:01.8007024Z             {
2026-06-22T01:08:01.8007151Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8007265Z               "line": 6161
2026-06-22T01:08:01.8007360Z             },
2026-06-22T01:08:01.8007482Z             {
2026-06-22T01:08:01.8007625Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8007726Z               "line": 6443
2026-06-22T01:08:01.8007844Z             }
2026-06-22T01:08:01.8007946Z           ]
2026-06-22T01:08:01.8008055Z         },
2026-06-22T01:08:01.8008154Z         "int": {
2026-06-22T01:08:01.8008275Z           "complete": false,
2026-06-22T01:08:01.8008398Z           "evidence": []
2026-06-22T01:08:01.8008493Z         },
2026-06-22T01:08:01.8008604Z         "unit": {
2026-06-22T01:08:01.8008718Z           "complete": true,
2026-06-22T01:08:01.8008822Z           "evidence": [
2026-06-22T01:08:01.8008923Z             {
2026-06-22T01:08:01.8009156Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8009276Z               "line": 94
2026-06-22T01:08:01.8009418Z             },
2026-06-22T01:08:01.8009577Z             {
2026-06-22T01:08:01.8009767Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8009934Z               "line": 111
2026-06-22T01:08:01.8010089Z             },
2026-06-22T01:08:01.8010233Z             {
2026-06-22T01:08:01.8010437Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8010586Z               "line": 124
2026-06-22T01:08:01.8010738Z             },
2026-06-22T01:08:01.8010877Z             {
2026-06-22T01:08:01.8011067Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8011367Z               "line": 134
2026-06-22T01:08:01.8011511Z             },
2026-06-22T01:08:01.8011653Z             {
2026-06-22T01:08:01.8011840Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8012002Z               "line": 144
2026-06-22T01:08:01.8012132Z             },
2026-06-22T01:08:01.8012282Z             {
2026-06-22T01:08:01.8012468Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T01:08:01.8012680Z               "line": 156
2026-06-22T01:08:01.8012829Z             },
2026-06-22T01:08:01.8012966Z             {
2026-06-22T01:08:01.8013186Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8013492Z               "line": 746
2026-06-22T01:08:01.8013644Z             },
2026-06-22T01:08:01.8013787Z             {
2026-06-22T01:08:01.8014026Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.8014191Z               "line": 309
2026-06-22T01:08:01.8014336Z             }
2026-06-22T01:08:01.8014483Z           ]
2026-06-22T01:08:01.8014612Z         }
2026-06-22T01:08:01.8014744Z       }
2026-06-22T01:08:01.8014888Z     },
2026-06-22T01:08:01.8015018Z     {
2026-06-22T01:08:01.8015210Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-22T01:08:01.8015418Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-22T01:08:01.8015585Z       "requiredStages": [
2026-06-22T01:08:01.8015715Z         "impl",
2026-06-22T01:08:01.8015866Z         "unit"
2026-06-22T01:08:01.8016039Z       ],
2026-06-22T01:08:01.8016186Z       "stages": {
2026-06-22T01:08:01.8016334Z         "doc": {
2026-06-22T01:08:01.8016501Z           "complete": false,
2026-06-22T01:08:01.8016663Z           "evidence": []
2026-06-22T01:08:01.8016801Z         },
2026-06-22T01:08:01.8016945Z         "impl": {
2026-06-22T01:08:01.8017135Z           "complete": true,
2026-06-22T01:08:01.8017288Z           "evidence": [
2026-06-22T01:08:01.8017436Z             {
2026-06-22T01:08:01.8017636Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8017797Z               "line": 128
2026-06-22T01:08:01.8017939Z             }
2026-06-22T01:08:01.8018080Z           ]
2026-06-22T01:08:01.8018229Z         },
2026-06-22T01:08:01.8018367Z         "int": {
2026-06-22T01:08:01.8018534Z           "complete": false,
2026-06-22T01:08:01.8018681Z           "evidence": []
2026-06-22T01:08:01.8018825Z         },
2026-06-22T01:08:01.8019038Z         "unit": {
2026-06-22T01:08:01.8019202Z           "complete": true,
2026-06-22T01:08:01.8019348Z           "evidence": [
2026-06-22T01:08:01.8019511Z             {
2026-06-22T01:08:01.8019717Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8019878Z               "line": 205
2026-06-22T01:08:01.8020032Z             }
2026-06-22T01:08:01.8020169Z           ]
2026-06-22T01:08:01.8020312Z         }
2026-06-22T01:08:01.8020461Z       }
2026-06-22T01:08:01.8020587Z     },
2026-06-22T01:08:01.8020726Z     {
2026-06-22T01:08:01.8020921Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-22T01:08:01.8021180Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-22T01:08:01.8021352Z       "requiredStages": [
2026-06-22T01:08:01.8021504Z         "impl",
2026-06-22T01:08:01.8021656Z         "unit"
2026-06-22T01:08:01.8021785Z       ],
2026-06-22T01:08:01.8021942Z       "stages": {
2026-06-22T01:08:01.8022076Z         "doc": {
2026-06-22T01:08:01.8022237Z           "complete": false,
2026-06-22T01:08:01.8022391Z           "evidence": []
2026-06-22T01:08:01.8022533Z         },
2026-06-22T01:08:01.8022678Z         "impl": {
2026-06-22T01:08:01.8022833Z           "complete": true,
2026-06-22T01:08:01.8022999Z           "evidence": [
2026-06-22T01:08:01.8023135Z             {
2026-06-22T01:08:01.8023336Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8023493Z               "line": 367
2026-06-22T01:08:01.8023642Z             },
2026-06-22T01:08:01.8023779Z             {
2026-06-22T01:08:01.8024112Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8024276Z               "line": 378
2026-06-22T01:08:01.8024409Z             },
2026-06-22T01:08:01.8024567Z             {
2026-06-22T01:08:01.8024756Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8024910Z               "line": 396
2026-06-22T01:08:01.8025057Z             }
2026-06-22T01:08:01.8025192Z           ]
2026-06-22T01:08:01.8025338Z         },
2026-06-22T01:08:01.8025483Z         "int": {
2026-06-22T01:08:01.8025643Z           "complete": false,
2026-06-22T01:08:01.8025795Z           "evidence": []
2026-06-22T01:08:01.8025942Z         },
2026-06-22T01:08:01.8026242Z         "unit": {
2026-06-22T01:08:01.8026403Z           "complete": true,
2026-06-22T01:08:01.8026565Z           "evidence": [
2026-06-22T01:08:01.8026703Z             {
2026-06-22T01:08:01.8026904Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8027056Z               "line": 420
2026-06-22T01:08:01.8027213Z             },
2026-06-22T01:08:01.8027357Z             {
2026-06-22T01:08:01.8027552Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8027705Z               "line": 441
2026-06-22T01:08:01.8027843Z             },
2026-06-22T01:08:01.8027982Z             {
2026-06-22T01:08:01.8028163Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8028313Z               "line": 811
2026-06-22T01:08:01.8028452Z             },
2026-06-22T01:08:01.8028579Z             {
2026-06-22T01:08:01.8028780Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8028927Z               "line": 822
2026-06-22T01:08:01.8029161Z             },
2026-06-22T01:08:01.8029318Z             {
2026-06-22T01:08:01.8029518Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8029633Z               "line": 835
2026-06-22T01:08:01.8029733Z             }
2026-06-22T01:08:01.8029843Z           ]
2026-06-22T01:08:01.8029942Z         }
2026-06-22T01:08:01.8030053Z       }
2026-06-22T01:08:01.8030157Z     },
2026-06-22T01:08:01.8030262Z     {
2026-06-22T01:08:01.8030414Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-22T01:08:01.8037874Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-22T01:08:01.8038260Z       "requiredStages": [
2026-06-22T01:08:01.8038479Z         "impl",
2026-06-22T01:08:01.8038585Z         "unit",
2026-06-22T01:08:01.8038691Z         "int"
2026-06-22T01:08:01.8038798Z       ],
2026-06-22T01:08:01.8038907Z       "stages": {
2026-06-22T01:08:01.8039096Z         "doc": {
2026-06-22T01:08:01.8039224Z           "complete": false,
2026-06-22T01:08:01.8039340Z           "evidence": []
2026-06-22T01:08:01.8039468Z         },
2026-06-22T01:08:01.8039573Z         "impl": {
2026-06-22T01:08:01.8039692Z           "complete": true,
2026-06-22T01:08:01.8039801Z           "evidence": [
2026-06-22T01:08:01.8039907Z             {
2026-06-22T01:08:01.8040064Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8040168Z               "line": 376
2026-06-22T01:08:01.8040280Z             },
2026-06-22T01:08:01.8040384Z             {
2026-06-22T01:08:01.8040537Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8040636Z               "line": 852
2026-06-22T01:08:01.8040741Z             },
2026-06-22T01:08:01.8040847Z             {
2026-06-22T01:08:01.8041008Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8041132Z               "line": 1127
2026-06-22T01:08:01.8041238Z             }
2026-06-22T01:08:01.8041346Z           ]
2026-06-22T01:08:01.8041433Z         },
2026-06-22T01:08:01.8041539Z         "int": {
2026-06-22T01:08:01.8041651Z           "complete": true,
2026-06-22T01:08:01.8041765Z           "evidence": [
2026-06-22T01:08:01.8041871Z             {
2026-06-22T01:08:01.8042047Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.8042157Z               "line": 256
2026-06-22T01:08:01.8042262Z             },
2026-06-22T01:08:01.8042366Z             {
2026-06-22T01:08:01.8042534Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.8042647Z               "line": 382
2026-06-22T01:08:01.8042758Z             }
2026-06-22T01:08:01.8042857Z           ]
2026-06-22T01:08:01.8042953Z         },
2026-06-22T01:08:01.8043168Z         "unit": {
2026-06-22T01:08:01.8043291Z           "complete": true,
2026-06-22T01:08:01.8043392Z           "evidence": [
2026-06-22T01:08:01.8043511Z             {
2026-06-22T01:08:01.8043663Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8043774Z               "line": 2833
2026-06-22T01:08:01.8043887Z             }
2026-06-22T01:08:01.8043986Z           ]
2026-06-22T01:08:01.8044096Z         }
2026-06-22T01:08:01.8044199Z       }
2026-06-22T01:08:01.8044298Z     },
2026-06-22T01:08:01.8044404Z     {
2026-06-22T01:08:01.8044571Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-22T01:08:01.8051959Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-22T01:08:01.8052436Z       "requiredStages": [
2026-06-22T01:08:01.8052540Z         "doc",
2026-06-22T01:08:01.8052644Z         "impl",
2026-06-22T01:08:01.8052751Z         "unit",
2026-06-22T01:08:01.8052841Z         "int"
2026-06-22T01:08:01.8052945Z       ],
2026-06-22T01:08:01.8053075Z       "stages": {
2026-06-22T01:08:01.8053175Z         "doc": {
2026-06-22T01:08:01.8053283Z           "complete": true,
2026-06-22T01:08:01.8053390Z           "evidence": [
2026-06-22T01:08:01.8053494Z             {
2026-06-22T01:08:01.8053622Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8053742Z               "line": 454
2026-06-22T01:08:01.8053847Z             }
2026-06-22T01:08:01.8053952Z           ]
2026-06-22T01:08:01.8054062Z         },
2026-06-22T01:08:01.8054161Z         "impl": {
2026-06-22T01:08:01.8054281Z           "complete": true,
2026-06-22T01:08:01.8058378Z           "evidence": [
2026-06-22T01:08:01.8058518Z             {
2026-06-22T01:08:01.8058693Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8058805Z               "line": 355
2026-06-22T01:08:01.8058909Z             },
2026-06-22T01:08:01.8059105Z             {
2026-06-22T01:08:01.8059265Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8059371Z               "line": 493
2026-06-22T01:08:01.8059482Z             },
2026-06-22T01:08:01.8059585Z             {
2026-06-22T01:08:01.8059735Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8059853Z               "line": 1941
2026-06-22T01:08:01.8059947Z             },
2026-06-22T01:08:01.8060052Z             {
2026-06-22T01:08:01.8060198Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.8060302Z               "line": 347
2026-06-22T01:08:01.8060407Z             }
2026-06-22T01:08:01.8060504Z           ]
2026-06-22T01:08:01.8060612Z         },
2026-06-22T01:08:01.8060713Z         "int": {
2026-06-22T01:08:01.8060827Z           "complete": true,
2026-06-22T01:08:01.8060936Z           "evidence": [
2026-06-22T01:08:01.8061037Z             {
2026-06-22T01:08:01.8061190Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.8061303Z               "line": 737
2026-06-22T01:08:01.8061409Z             },
2026-06-22T01:08:01.8061509Z             {
2026-06-22T01:08:01.8061790Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.8061890Z               "line": 854
2026-06-22T01:08:01.8061991Z             },
2026-06-22T01:08:01.8062147Z             {
2026-06-22T01:08:01.8062325Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.8062448Z               "line": 544
2026-06-22T01:08:01.8062543Z             },
2026-06-22T01:08:01.8062649Z             {
2026-06-22T01:08:01.8062824Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.8062967Z               "line": 1830
2026-06-22T01:08:01.8063082Z             },
2026-06-22T01:08:01.8063281Z             {
2026-06-22T01:08:01.8063457Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-22T01:08:01.8063563Z               "line": 266
2026-06-22T01:08:01.8063663Z             }
2026-06-22T01:08:01.8063763Z           ]
2026-06-22T01:08:01.8063863Z         },
2026-06-22T01:08:01.8063978Z         "unit": {
2026-06-22T01:08:01.8064087Z           "complete": true,
2026-06-22T01:08:01.8064197Z           "evidence": [
2026-06-22T01:08:01.8064298Z             {
2026-06-22T01:08:01.8064435Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.8064546Z               "line": 1046
2026-06-22T01:08:01.8064655Z             },
2026-06-22T01:08:01.8064759Z             {
2026-06-22T01:08:01.8064895Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.8065012Z               "line": 1080
2026-06-22T01:08:01.8065111Z             }
2026-06-22T01:08:01.8065221Z           ]
2026-06-22T01:08:01.8065324Z         }
2026-06-22T01:08:01.8065423Z       }
2026-06-22T01:08:01.8065524Z     },
2026-06-22T01:08:01.8065616Z     {
2026-06-22T01:08:01.8065762Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-22T01:08:01.8066377Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-22T01:08:01.8066512Z       "requiredStages": [
2026-06-22T01:08:01.8066621Z         "impl",
2026-06-22T01:08:01.8066725Z         "unit"
2026-06-22T01:08:01.8066832Z       ],
2026-06-22T01:08:01.8066936Z       "stages": {
2026-06-22T01:08:01.8067040Z         "doc": {
2026-06-22T01:08:01.8067146Z           "complete": false,
2026-06-22T01:08:01.8067259Z           "evidence": []
2026-06-22T01:08:01.8067364Z         },
2026-06-22T01:08:01.8067475Z         "impl": {
2026-06-22T01:08:01.8067593Z           "complete": true,
2026-06-22T01:08:01.8067704Z           "evidence": [
2026-06-22T01:08:01.8067814Z             {
2026-06-22T01:08:01.8067969Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8068088Z               "line": 759
2026-06-22T01:08:01.8068191Z             }
2026-06-22T01:08:01.8068291Z           ]
2026-06-22T01:08:01.8068396Z         },
2026-06-22T01:08:01.8068492Z         "int": {
2026-06-22T01:08:01.8068615Z           "complete": false,
2026-06-22T01:08:01.8068716Z           "evidence": []
2026-06-22T01:08:01.8068826Z         },
2026-06-22T01:08:01.8068934Z         "unit": {
2026-06-22T01:08:01.8069131Z           "complete": true,
2026-06-22T01:08:01.8069244Z           "evidence": [
2026-06-22T01:08:01.8069350Z             {
2026-06-22T01:08:01.8069507Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8069607Z               "line": 873
2026-06-22T01:08:01.8069713Z             }
2026-06-22T01:08:01.8069826Z           ]
2026-06-22T01:08:01.8069926Z         }
2026-06-22T01:08:01.8070032Z       }
2026-06-22T01:08:01.8070126Z     },
2026-06-22T01:08:01.8070231Z     {
2026-06-22T01:08:01.8070390Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-22T01:08:01.8072823Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-22T01:08:01.8073071Z       "requiredStages": [
2026-06-22T01:08:01.8073285Z         "impl",
2026-06-22T01:08:01.8073388Z         "unit",
2026-06-22T01:08:01.8073489Z         "int"
2026-06-22T01:08:01.8073589Z       ],
2026-06-22T01:08:01.8073703Z       "stages": {
2026-06-22T01:08:01.8073803Z         "doc": {
2026-06-22T01:08:01.8073909Z           "complete": false,
2026-06-22T01:08:01.8074046Z           "evidence": []
2026-06-22T01:08:01.8074147Z         },
2026-06-22T01:08:01.8074252Z         "impl": {
2026-06-22T01:08:01.8074370Z           "complete": true,
2026-06-22T01:08:01.8074476Z           "evidence": [
2026-06-22T01:08:01.8074581Z             {
2026-06-22T01:08:01.8074738Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8074849Z               "line": 705
2026-06-22T01:08:01.8074953Z             }
2026-06-22T01:08:01.8075062Z           ]
2026-06-22T01:08:01.8075159Z         },
2026-06-22T01:08:01.8075262Z         "int": {
2026-06-22T01:08:01.8075373Z           "complete": true,
2026-06-22T01:08:01.8075479Z           "evidence": [
2026-06-22T01:08:01.8075581Z             {
2026-06-22T01:08:01.8075748Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-22T01:08:01.8075857Z               "line": 24
2026-06-22T01:08:01.8075960Z             }
2026-06-22T01:08:01.8076060Z           ]
2026-06-22T01:08:01.8076161Z         },
2026-06-22T01:08:01.8076270Z         "unit": {
2026-06-22T01:08:01.8076394Z           "complete": true,
2026-06-22T01:08:01.8076504Z           "evidence": [
2026-06-22T01:08:01.8076613Z             {
2026-06-22T01:08:01.8076762Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8076880Z               "line": 918
2026-06-22T01:08:01.8076985Z             }
2026-06-22T01:08:01.8077091Z           ]
2026-06-22T01:08:01.8077186Z         }
2026-06-22T01:08:01.8077281Z       }
2026-06-22T01:08:01.8077387Z     },
2026-06-22T01:08:01.8077471Z     {
2026-06-22T01:08:01.8077605Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-22T01:08:01.8081272Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-22T01:08:01.8081460Z       "requiredStages": [
2026-06-22T01:08:01.8081571Z         "impl",
2026-06-22T01:08:01.8081685Z         "unit",
2026-06-22T01:08:01.8081933Z         "int"
2026-06-22T01:08:01.8082033Z       ],
2026-06-22T01:08:01.8082143Z       "stages": {
2026-06-22T01:08:01.8082248Z         "doc": {
2026-06-22T01:08:01.8082367Z           "complete": false,
2026-06-22T01:08:01.8082478Z           "evidence": []
2026-06-22T01:08:01.8082586Z         },
2026-06-22T01:08:01.8082686Z         "impl": {
2026-06-22T01:08:01.8082797Z           "complete": true,
2026-06-22T01:08:01.8082906Z           "evidence": [
2026-06-22T01:08:01.8083015Z             {
2026-06-22T01:08:01.8083178Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8083277Z               "line": 391
2026-06-22T01:08:01.8083498Z             },
2026-06-22T01:08:01.8083601Z             {
2026-06-22T01:08:01.8083741Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8083845Z               "line": 343
2026-06-22T01:08:01.8083948Z             },
2026-06-22T01:08:01.8084053Z             {
2026-06-22T01:08:01.8084184Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8084296Z               "line": 1750
2026-06-22T01:08:01.8084398Z             },
2026-06-22T01:08:01.8084502Z             {
2026-06-22T01:08:01.8084635Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8084755Z               "line": 3191
2026-06-22T01:08:01.8084865Z             }
2026-06-22T01:08:01.8084969Z           ]
2026-06-22T01:08:01.8085075Z         },
2026-06-22T01:08:01.8085179Z         "int": {
2026-06-22T01:08:01.8085303Z           "complete": true,
2026-06-22T01:08:01.8085413Z           "evidence": [
2026-06-22T01:08:01.8085513Z             {
2026-06-22T01:08:01.8085681Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:08:01.8085790Z               "line": 353
2026-06-22T01:08:01.8085898Z             },
2026-06-22T01:08:01.8085996Z             {
2026-06-22T01:08:01.8086174Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-22T01:08:01.8086279Z               "line": 23
2026-06-22T01:08:01.8086394Z             }
2026-06-22T01:08:01.8086496Z           ]
2026-06-22T01:08:01.8086586Z         },
2026-06-22T01:08:01.8086697Z         "unit": {
2026-06-22T01:08:01.8086820Z           "complete": true,
2026-06-22T01:08:01.8086950Z           "evidence": [
2026-06-22T01:08:01.8087054Z             {
2026-06-22T01:08:01.8087202Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8087322Z               "line": 743
2026-06-22T01:08:01.8087427Z             },
2026-06-22T01:08:01.8087531Z             {
2026-06-22T01:08:01.8087665Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8087774Z               "line": 7863
2026-06-22T01:08:01.8087879Z             }
2026-06-22T01:08:01.8087985Z           ]
2026-06-22T01:08:01.8088094Z         }
2026-06-22T01:08:01.8088180Z       }
2026-06-22T01:08:01.8088286Z     },
2026-06-22T01:08:01.8088384Z     {
2026-06-22T01:08:01.8088519Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-22T01:08:01.8091897Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-22T01:08:01.8092184Z       "requiredStages": [
2026-06-22T01:08:01.8092288Z         "impl",
2026-06-22T01:08:01.8092398Z         "unit",
2026-06-22T01:08:01.8092498Z         "int"
2026-06-22T01:08:01.8092607Z       ],
2026-06-22T01:08:01.8092708Z       "stages": {
2026-06-22T01:08:01.8092818Z         "doc": {
2026-06-22T01:08:01.8092941Z           "complete": false,
2026-06-22T01:08:01.8093052Z           "evidence": []
2026-06-22T01:08:01.8093161Z         },
2026-06-22T01:08:01.8093265Z         "impl": {
2026-06-22T01:08:01.8093372Z           "complete": true,
2026-06-22T01:08:01.8093599Z           "evidence": [
2026-06-22T01:08:01.8093710Z             {
2026-06-22T01:08:01.8093866Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8093977Z               "line": 64
2026-06-22T01:08:01.8094072Z             },
2026-06-22T01:08:01.8094176Z             {
2026-06-22T01:08:01.8094330Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8094438Z               "line": 78
2026-06-22T01:08:01.8094551Z             },
2026-06-22T01:08:01.8094657Z             {
2026-06-22T01:08:01.8094805Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8094923Z               "line": 170
2026-06-22T01:08:01.8095025Z             },
2026-06-22T01:08:01.8095129Z             {
2026-06-22T01:08:01.8095268Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8095391Z               "line": 185
2026-06-22T01:08:01.8095500Z             },
2026-06-22T01:08:01.8095607Z             {
2026-06-22T01:08:01.8095754Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8095878Z               "line": 195
2026-06-22T01:08:01.8095983Z             },
2026-06-22T01:08:01.8096078Z             {
2026-06-22T01:08:01.8096232Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8096336Z               "line": 205
2026-06-22T01:08:01.8096440Z             },
2026-06-22T01:08:01.8096546Z             {
2026-06-22T01:08:01.8096697Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8096829Z               "line": 294
2026-06-22T01:08:01.8096930Z             },
2026-06-22T01:08:01.8097038Z             {
2026-06-22T01:08:01.8097186Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8097296Z               "line": 308
2026-06-22T01:08:01.8097399Z             },
2026-06-22T01:08:01.8097495Z             {
2026-06-22T01:08:01.8097639Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8097830Z               "line": 377
2026-06-22T01:08:01.8097930Z             },
2026-06-22T01:08:01.8098043Z             {
2026-06-22T01:08:01.8098178Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8098287Z               "line": 437
2026-06-22T01:08:01.8098391Z             },
2026-06-22T01:08:01.8098507Z             {
2026-06-22T01:08:01.8098659Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8098769Z               "line": 455
2026-06-22T01:08:01.8098879Z             }
2026-06-22T01:08:01.8099055Z           ]
2026-06-22T01:08:01.8099165Z         },
2026-06-22T01:08:01.8099268Z         "int": {
2026-06-22T01:08:01.8099384Z           "complete": true,
2026-06-22T01:08:01.8099490Z           "evidence": [
2026-06-22T01:08:01.8099588Z             {
2026-06-22T01:08:01.8099759Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:08:01.8099868Z               "line": 45
2026-06-22T01:08:01.8099976Z             },
2026-06-22T01:08:01.8100081Z             {
2026-06-22T01:08:01.8100238Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T01:08:01.8100347Z               "line": 354
2026-06-22T01:08:01.8100454Z             },
2026-06-22T01:08:01.8100558Z             {
2026-06-22T01:08:01.8100726Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T01:08:01.8100939Z               "line": 31
2026-06-22T01:08:01.8101026Z             }
2026-06-22T01:08:01.8101135Z           ]
2026-06-22T01:08:01.8101292Z         },
2026-06-22T01:08:01.8101398Z         "unit": {
2026-06-22T01:08:01.8101511Z           "complete": true,
2026-06-22T01:08:01.8101616Z           "evidence": [
2026-06-22T01:08:01.8101718Z             {
2026-06-22T01:08:01.8101869Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8101980Z               "line": 727
2026-06-22T01:08:01.8102075Z             }
2026-06-22T01:08:01.8102178Z           ]
2026-06-22T01:08:01.8102283Z         }
2026-06-22T01:08:01.8102466Z       }
2026-06-22T01:08:01.8102571Z     },
2026-06-22T01:08:01.8102672Z     {
2026-06-22T01:08:01.8102805Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-22T01:08:01.8103044Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-22T01:08:01.8103153Z       "requiredStages": [
2026-06-22T01:08:01.8103263Z         "impl",
2026-06-22T01:08:01.8103373Z         "unit"
2026-06-22T01:08:01.8103477Z       ],
2026-06-22T01:08:01.8103583Z       "stages": {
2026-06-22T01:08:01.8103687Z         "doc": {
2026-06-22T01:08:01.8103806Z           "complete": false,
2026-06-22T01:08:01.8103917Z           "evidence": []
2026-06-22T01:08:01.8104016Z         },
2026-06-22T01:08:01.8104126Z         "impl": {
2026-06-22T01:08:01.8104232Z           "complete": true,
2026-06-22T01:08:01.8104335Z           "evidence": [
2026-06-22T01:08:01.8104445Z             {
2026-06-22T01:08:01.8104585Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8104688Z               "line": 14
2026-06-22T01:08:01.8104799Z             },
2026-06-22T01:08:01.8104900Z             {
2026-06-22T01:08:01.8105036Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.8105150Z               "line": 566
2026-06-22T01:08:01.8105256Z             }
2026-06-22T01:08:01.8105360Z           ]
2026-06-22T01:08:01.8105455Z         },
2026-06-22T01:08:01.8105556Z         "int": {
2026-06-22T01:08:01.8105665Z           "complete": false,
2026-06-22T01:08:01.8105784Z           "evidence": []
2026-06-22T01:08:01.8105890Z         },
2026-06-22T01:08:01.8105999Z         "unit": {
2026-06-22T01:08:01.8106119Z           "complete": true,
2026-06-22T01:08:01.8106228Z           "evidence": [
2026-06-22T01:08:01.8106333Z             {
2026-06-22T01:08:01.8106457Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8106581Z               "line": 130
2026-06-22T01:08:01.8106700Z             },
2026-06-22T01:08:01.8106806Z             {
2026-06-22T01:08:01.8106948Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8107062Z               "line": 138
2026-06-22T01:08:01.8107168Z             },
2026-06-22T01:08:01.8107272Z             {
2026-06-22T01:08:01.8107404Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8107509Z               "line": 146
2026-06-22T01:08:01.8107617Z             },
2026-06-22T01:08:01.8107731Z             {
2026-06-22T01:08:01.8107866Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8107974Z               "line": 154
2026-06-22T01:08:01.8108075Z             },
2026-06-22T01:08:01.8108180Z             {
2026-06-22T01:08:01.8108312Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8108423Z               "line": 162
2026-06-22T01:08:01.8108528Z             },
2026-06-22T01:08:01.8108632Z             {
2026-06-22T01:08:01.8108762Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T01:08:01.8108871Z               "line": 170
2026-06-22T01:08:01.8109057Z             }
2026-06-22T01:08:01.8109157Z           ]
2026-06-22T01:08:01.8109261Z         }
2026-06-22T01:08:01.8109368Z       }
2026-06-22T01:08:01.8109457Z     },
2026-06-22T01:08:01.8109567Z     {
2026-06-22T01:08:01.8109697Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-22T01:08:01.8110603Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-22T01:08:01.8110836Z       "requiredStages": [
2026-06-22T01:08:01.8110937Z         "impl",
2026-06-22T01:08:01.8111038Z         "unit"
2026-06-22T01:08:01.8111137Z       ],
2026-06-22T01:08:01.8111257Z       "stages": {
2026-06-22T01:08:01.8111362Z         "doc": {
2026-06-22T01:08:01.8111485Z           "complete": false,
2026-06-22T01:08:01.8111596Z           "evidence": []
2026-06-22T01:08:01.8111814Z         },
2026-06-22T01:08:01.8111915Z         "impl": {
2026-06-22T01:08:01.8112029Z           "complete": true,
2026-06-22T01:08:01.8112143Z           "evidence": [
2026-06-22T01:08:01.8112249Z             {
2026-06-22T01:08:01.8112420Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8112554Z               "line": 34
2026-06-22T01:08:01.8112654Z             }
2026-06-22T01:08:01.8112757Z           ]
2026-06-22T01:08:01.8112862Z         },
2026-06-22T01:08:01.8112971Z         "int": {
2026-06-22T01:08:01.8113088Z           "complete": false,
2026-06-22T01:08:01.8113198Z           "evidence": []
2026-06-22T01:08:01.8113305Z         },
2026-06-22T01:08:01.8113403Z         "unit": {
2026-06-22T01:08:01.8113523Z           "complete": true,
2026-06-22T01:08:01.8113638Z           "evidence": [
2026-06-22T01:08:01.8113742Z             {
2026-06-22T01:08:01.8113900Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8114023Z               "line": 188
2026-06-22T01:08:01.8114134Z             },
2026-06-22T01:08:01.8114238Z             {
2026-06-22T01:08:01.8114400Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8114511Z               "line": 200
2026-06-22T01:08:01.8114620Z             },
2026-06-22T01:08:01.8114724Z             {
2026-06-22T01:08:01.8114896Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8115010Z               "line": 211
2026-06-22T01:08:01.8115111Z             },
2026-06-22T01:08:01.8115234Z             {
2026-06-22T01:08:01.8115403Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8115526Z               "line": 253
2026-06-22T01:08:01.8115629Z             },
2026-06-22T01:08:01.8115739Z             {
2026-06-22T01:08:01.8115906Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8116010Z               "line": 277
2026-06-22T01:08:01.8116121Z             },
2026-06-22T01:08:01.8116225Z             {
2026-06-22T01:08:01.8116408Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8116531Z               "line": 300
2026-06-22T01:08:01.8116630Z             },
2026-06-22T01:08:01.8116732Z             {
2026-06-22T01:08:01.8116893Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T01:08:01.8117013Z               "line": 316
2026-06-22T01:08:01.8117122Z             }
2026-06-22T01:08:01.8117241Z           ]
2026-06-22T01:08:01.8117352Z         }
2026-06-22T01:08:01.8117470Z       }
2026-06-22T01:08:01.8117565Z     },
2026-06-22T01:08:01.8117676Z     {
2026-06-22T01:08:01.8117817Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-22T01:08:01.8118383Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-22T01:08:01.8118511Z       "requiredStages": [
2026-06-22T01:08:01.8118620Z         "impl",
2026-06-22T01:08:01.8118726Z         "unit"
2026-06-22T01:08:01.8118835Z       ],
2026-06-22T01:08:01.8119022Z       "stages": {
2026-06-22T01:08:01.8119130Z         "doc": {
2026-06-22T01:08:01.8119245Z           "complete": false,
2026-06-22T01:08:01.8119365Z           "evidence": []
2026-06-22T01:08:01.8119584Z         },
2026-06-22T01:08:01.8119693Z         "impl": {
2026-06-22T01:08:01.8119813Z           "complete": true,
2026-06-22T01:08:01.8119914Z           "evidence": [
2026-06-22T01:08:01.8120022Z             {
2026-06-22T01:08:01.8120165Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8120280Z               "line": 29
2026-06-22T01:08:01.8120384Z             },
2026-06-22T01:08:01.8120485Z             {
2026-06-22T01:08:01.8120633Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8120732Z               "line": 174
2026-06-22T01:08:01.8120836Z             },
2026-06-22T01:08:01.8121040Z             {
2026-06-22T01:08:01.8121192Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8121312Z               "line": 194
2026-06-22T01:08:01.8121411Z             },
2026-06-22T01:08:01.8121517Z             {
2026-06-22T01:08:01.8121650Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8121773Z               "line": 222
2026-06-22T01:08:01.8121870Z             }
2026-06-22T01:08:01.8121975Z           ]
2026-06-22T01:08:01.8122083Z         },
2026-06-22T01:08:01.8122179Z         "int": {
2026-06-22T01:08:01.8122298Z           "complete": false,
2026-06-22T01:08:01.8122408Z           "evidence": []
2026-06-22T01:08:01.8122504Z         },
2026-06-22T01:08:01.8122608Z         "unit": {
2026-06-22T01:08:01.8122722Z           "complete": true,
2026-06-22T01:08:01.8122838Z           "evidence": [
2026-06-22T01:08:01.8122941Z             {
2026-06-22T01:08:01.8123076Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8123186Z               "line": 329
2026-06-22T01:08:01.8123298Z             },
2026-06-22T01:08:01.8123393Z             {
2026-06-22T01:08:01.8123545Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8123658Z               "line": 344
2026-06-22T01:08:01.8123759Z             },
2026-06-22T01:08:01.8123860Z             {
2026-06-22T01:08:01.8123992Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8124108Z               "line": 417
2026-06-22T01:08:01.8124213Z             },
2026-06-22T01:08:01.8124321Z             {
2026-06-22T01:08:01.8124470Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8124574Z               "line": 433
2026-06-22T01:08:01.8124684Z             },
2026-06-22T01:08:01.8124784Z             {
2026-06-22T01:08:01.8124936Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8125047Z               "line": 492
2026-06-22T01:08:01.8125151Z             },
2026-06-22T01:08:01.8125255Z             {
2026-06-22T01:08:01.8125395Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8125508Z               "line": 506
2026-06-22T01:08:01.8125614Z             },
2026-06-22T01:08:01.8125725Z             {
2026-06-22T01:08:01.8125876Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8125991Z               "line": 517
2026-06-22T01:08:01.8126100Z             },
2026-06-22T01:08:01.8126194Z             {
2026-06-22T01:08:01.8126337Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8126448Z               "line": 528
2026-06-22T01:08:01.8126547Z             }
2026-06-22T01:08:01.8126657Z           ]
2026-06-22T01:08:01.8126758Z         }
2026-06-22T01:08:01.8126861Z       }
2026-06-22T01:08:01.8126963Z     },
2026-06-22T01:08:01.8127067Z     {
2026-06-22T01:08:01.8127214Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-22T01:08:01.8127912Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-22T01:08:01.8128048Z       "requiredStages": [
2026-06-22T01:08:01.8128159Z         "impl",
2026-06-22T01:08:01.8128270Z         "unit"
2026-06-22T01:08:01.8128373Z       ],
2026-06-22T01:08:01.8128573Z       "stages": {
2026-06-22T01:08:01.8128676Z         "doc": {
2026-06-22T01:08:01.8128794Z           "complete": false,
2026-06-22T01:08:01.8128904Z           "evidence": []
2026-06-22T01:08:01.8129080Z         },
2026-06-22T01:08:01.8129185Z         "impl": {
2026-06-22T01:08:01.8129295Z           "complete": true,
2026-06-22T01:08:01.8129404Z           "evidence": [
2026-06-22T01:08:01.8129510Z             {
2026-06-22T01:08:01.8129681Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8129786Z               "line": 27
2026-06-22T01:08:01.8129891Z             },
2026-06-22T01:08:01.8130005Z             {
2026-06-22T01:08:01.8130277Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8130396Z               "line": 110
2026-06-22T01:08:01.8130498Z             },
2026-06-22T01:08:01.8130606Z             {
2026-06-22T01:08:01.8130764Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8130869Z               "line": 153
2026-06-22T01:08:01.8130978Z             },
2026-06-22T01:08:01.8131075Z             {
2026-06-22T01:08:01.8131240Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8131348Z               "line": 182
2026-06-22T01:08:01.8131454Z             },
2026-06-22T01:08:01.8131566Z             {
2026-06-22T01:08:01.8131738Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8131853Z               "line": 31
2026-06-22T01:08:01.8131952Z             },
2026-06-22T01:08:01.8132062Z             {
2026-06-22T01:08:01.8132238Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8132353Z               "line": 113
2026-06-22T01:08:01.8132458Z             },
2026-06-22T01:08:01.8132558Z             {
2026-06-22T01:08:01.8132721Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8132830Z               "line": 138
2026-06-22T01:08:01.8132934Z             }
2026-06-22T01:08:01.8133041Z           ]
2026-06-22T01:08:01.8133144Z         },
2026-06-22T01:08:01.8133249Z         "int": {
2026-06-22T01:08:01.8133365Z           "complete": false,
2026-06-22T01:08:01.8133473Z           "evidence": []
2026-06-22T01:08:01.8133574Z         },
2026-06-22T01:08:01.8133680Z         "unit": {
2026-06-22T01:08:01.8133793Z           "complete": true,
2026-06-22T01:08:01.8133897Z           "evidence": [
2026-06-22T01:08:01.8134002Z             {
2026-06-22T01:08:01.8134162Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8134266Z               "line": 261
2026-06-22T01:08:01.8134362Z             },
2026-06-22T01:08:01.8134476Z             {
2026-06-22T01:08:01.8134629Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8134739Z               "line": 276
2026-06-22T01:08:01.8134847Z             },
2026-06-22T01:08:01.8134954Z             {
2026-06-22T01:08:01.8135106Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8135215Z               "line": 293
2026-06-22T01:08:01.8135326Z             },
2026-06-22T01:08:01.8135430Z             {
2026-06-22T01:08:01.8135588Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8135711Z               "line": 310
2026-06-22T01:08:01.8135815Z             },
2026-06-22T01:08:01.8135917Z             {
2026-06-22T01:08:01.8136068Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8136188Z               "line": 327
2026-06-22T01:08:01.8136299Z             },
2026-06-22T01:08:01.8136402Z             {
2026-06-22T01:08:01.8136561Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.8136674Z               "line": 366
2026-06-22T01:08:01.8136783Z             },
2026-06-22T01:08:01.8136893Z             {
2026-06-22T01:08:01.8137064Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8137184Z               "line": 179
2026-06-22T01:08:01.8137374Z             },
2026-06-22T01:08:01.8137479Z             {
2026-06-22T01:08:01.8137652Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8137770Z               "line": 194
2026-06-22T01:08:01.8137876Z             },
2026-06-22T01:08:01.8137980Z             {
2026-06-22T01:08:01.8138152Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8138261Z               "line": 204
2026-06-22T01:08:01.8138370Z             },
2026-06-22T01:08:01.8138472Z             {
2026-06-22T01:08:01.8138647Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8138835Z               "line": 259
2026-06-22T01:08:01.8139023Z             },
2026-06-22T01:08:01.8139128Z             {
2026-06-22T01:08:01.8139297Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8139407Z               "line": 269
2026-06-22T01:08:01.8139503Z             },
2026-06-22T01:08:01.8139612Z             {
2026-06-22T01:08:01.8139774Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.8139880Z               "line": 283
2026-06-22T01:08:01.8139984Z             }
2026-06-22T01:08:01.8140085Z           ]
2026-06-22T01:08:01.8140189Z         }
2026-06-22T01:08:01.8140289Z       }
2026-06-22T01:08:01.8140390Z     },
2026-06-22T01:08:01.8140494Z     {
2026-06-22T01:08:01.8140632Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-22T01:08:01.8140847Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-22T01:08:01.8140966Z       "requiredStages": [],
2026-06-22T01:08:01.8141063Z       "stages": {
2026-06-22T01:08:01.8141171Z         "doc": {
2026-06-22T01:08:01.8141290Z           "complete": false,
2026-06-22T01:08:01.8141415Z           "evidence": []
2026-06-22T01:08:01.8141519Z         },
2026-06-22T01:08:01.8141630Z         "impl": {
2026-06-22T01:08:01.8141744Z           "complete": false,
2026-06-22T01:08:01.8141862Z           "evidence": []
2026-06-22T01:08:01.8141962Z         },
2026-06-22T01:08:01.8142071Z         "int": {
2026-06-22T01:08:01.8142198Z           "complete": false,
2026-06-22T01:08:01.8142302Z           "evidence": []
2026-06-22T01:08:01.8142408Z         },
2026-06-22T01:08:01.8142512Z         "unit": {
2026-06-22T01:08:01.8142627Z           "complete": false,
2026-06-22T01:08:01.8142742Z           "evidence": []
2026-06-22T01:08:01.8142846Z         }
2026-06-22T01:08:01.8142952Z       }
2026-06-22T01:08:01.8143056Z     },
2026-06-22T01:08:01.8143233Z     {
2026-06-22T01:08:01.8143380Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-22T01:08:01.8144211Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-22T01:08:01.8144344Z       "requiredStages": [
2026-06-22T01:08:01.8144461Z         "impl",
2026-06-22T01:08:01.8144572Z         "unit"
2026-06-22T01:08:01.8144670Z       ],
2026-06-22T01:08:01.8144773Z       "stages": {
2026-06-22T01:08:01.8144879Z         "doc": {
2026-06-22T01:08:01.8145004Z           "complete": false,
2026-06-22T01:08:01.8145117Z           "evidence": []
2026-06-22T01:08:01.8145218Z         },
2026-06-22T01:08:01.8145333Z         "impl": {
2026-06-22T01:08:01.8145441Z           "complete": true,
2026-06-22T01:08:01.8145552Z           "evidence": [
2026-06-22T01:08:01.8145656Z             {
2026-06-22T01:08:01.8145814Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8145933Z               "line": 26
2026-06-22T01:08:01.8146042Z             },
2026-06-22T01:08:01.8146148Z             {
2026-06-22T01:08:01.8146463Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8146581Z               "line": 95
2026-06-22T01:08:01.8146686Z             },
2026-06-22T01:08:01.8146778Z             {
2026-06-22T01:08:01.8147044Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8147159Z               "line": 166
2026-06-22T01:08:01.8147267Z             },
2026-06-22T01:08:01.8147357Z             {
2026-06-22T01:08:01.8147506Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8147615Z               "line": 19
2026-06-22T01:08:01.8147715Z             },
2026-06-22T01:08:01.8147821Z             {
2026-06-22T01:08:01.8147967Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8148078Z               "line": 50
2026-06-22T01:08:01.8148178Z             },
2026-06-22T01:08:01.8151521Z             {
2026-06-22T01:08:01.8151875Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:08:01.8151980Z               "line": 18
2026-06-22T01:08:01.8152089Z             },
2026-06-22T01:08:01.8152180Z             {
2026-06-22T01:08:01.8152337Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:08:01.8152446Z               "line": 71
2026-06-22T01:08:01.8152560Z             },
2026-06-22T01:08:01.8152668Z             {
2026-06-22T01:08:01.8152819Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8152935Z               "line": 87
2026-06-22T01:08:01.8153034Z             }
2026-06-22T01:08:01.8153139Z           ]
2026-06-22T01:08:01.8153245Z         },
2026-06-22T01:08:01.8153354Z         "int": {
2026-06-22T01:08:01.8153468Z           "complete": false,
2026-06-22T01:08:01.8153574Z           "evidence": []
2026-06-22T01:08:01.8153687Z         },
2026-06-22T01:08:01.8153793Z         "unit": {
2026-06-22T01:08:01.8153907Z           "complete": true,
2026-06-22T01:08:01.8154016Z           "evidence": [
2026-06-22T01:08:01.8154127Z             {
2026-06-22T01:08:01.8154284Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8154394Z               "line": 289
2026-06-22T01:08:01.8154495Z             },
2026-06-22T01:08:01.8154598Z             {
2026-06-22T01:08:01.8154747Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8154861Z               "line": 314
2026-06-22T01:08:01.8154965Z             },
2026-06-22T01:08:01.8155069Z             {
2026-06-22T01:08:01.8155216Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8155325Z               "line": 350
2026-06-22T01:08:01.8155425Z             },
2026-06-22T01:08:01.8155535Z             {
2026-06-22T01:08:01.8155681Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8155788Z               "line": 418
2026-06-22T01:08:01.8155888Z             },
2026-06-22T01:08:01.8155992Z             {
2026-06-22T01:08:01.8156150Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8156259Z               "line": 429
2026-06-22T01:08:01.8156379Z             },
2026-06-22T01:08:01.8156474Z             {
2026-06-22T01:08:01.8156622Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8156742Z               "line": 460
2026-06-22T01:08:01.8156851Z             },
2026-06-22T01:08:01.8156955Z             {
2026-06-22T01:08:01.8157099Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.8157203Z               "line": 471
2026-06-22T01:08:01.8157309Z             },
2026-06-22T01:08:01.8157414Z             {
2026-06-22T01:08:01.8157566Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8157677Z               "line": 77
2026-06-22T01:08:01.8157771Z             },
2026-06-22T01:08:01.8157865Z             {
2026-06-22T01:08:01.8158018Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8158123Z               "line": 97
2026-06-22T01:08:01.8158236Z             },
2026-06-22T01:08:01.8158342Z             {
2026-06-22T01:08:01.8158480Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8158595Z               "line": 112
2026-06-22T01:08:01.8158691Z             },
2026-06-22T01:08:01.8158800Z             {
2026-06-22T01:08:01.8159034Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8159253Z               "line": 123
2026-06-22T01:08:01.8159363Z             },
2026-06-22T01:08:01.8159458Z             {
2026-06-22T01:08:01.8159621Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8159720Z               "line": 130
2026-06-22T01:08:01.8159820Z             },
2026-06-22T01:08:01.8159917Z             {
2026-06-22T01:08:01.8160049Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T01:08:01.8160167Z               "line": 145
2026-06-22T01:08:01.8160272Z             },
2026-06-22T01:08:01.8160375Z             {
2026-06-22T01:08:01.8160503Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:08:01.8160704Z               "line": 115
2026-06-22T01:08:01.8160803Z             },
2026-06-22T01:08:01.8160904Z             {
2026-06-22T01:08:01.8161043Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:08:01.8161151Z               "line": 130
2026-06-22T01:08:01.8161258Z             },
2026-06-22T01:08:01.8161399Z             {
2026-06-22T01:08:01.8161544Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8161658Z               "line": 428
2026-06-22T01:08:01.8161762Z             }
2026-06-22T01:08:01.8161868Z           ]
2026-06-22T01:08:01.8161967Z         }
2026-06-22T01:08:01.8162077Z       }
2026-06-22T01:08:01.8162173Z     },
2026-06-22T01:08:01.8162277Z     {
2026-06-22T01:08:01.8162430Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-22T01:08:01.8168559Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-22T01:08:01.8168787Z       "requiredStages": [
2026-06-22T01:08:01.8168903Z         "impl",
2026-06-22T01:08:01.8169088Z         "unit",
2026-06-22T01:08:01.8169179Z         "int"
2026-06-22T01:08:01.8169284Z       ],
2026-06-22T01:08:01.8169393Z       "stages": {
2026-06-22T01:08:01.8169498Z         "doc": {
2026-06-22T01:08:01.8169623Z           "complete": false,
2026-06-22T01:08:01.8169847Z           "evidence": []
2026-06-22T01:08:01.8169946Z         },
2026-06-22T01:08:01.8170047Z         "impl": {
2026-06-22T01:08:01.8170167Z           "complete": true,
2026-06-22T01:08:01.8170280Z           "evidence": [
2026-06-22T01:08:01.8170376Z             {
2026-06-22T01:08:01.8170520Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8170637Z               "line": 1038
2026-06-22T01:08:01.8170741Z             },
2026-06-22T01:08:01.8170841Z             {
2026-06-22T01:08:01.8170987Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8171097Z               "line": 322
2026-06-22T01:08:01.8171288Z             }
2026-06-22T01:08:01.8171392Z           ]
2026-06-22T01:08:01.8171494Z         },
2026-06-22T01:08:01.8171603Z         "int": {
2026-06-22T01:08:01.8171712Z           "complete": true,
2026-06-22T01:08:01.8171827Z           "evidence": [
2026-06-22T01:08:01.8171931Z             {
2026-06-22T01:08:01.8172113Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.8172227Z               "line": 2013
2026-06-22T01:08:01.8172312Z             }
2026-06-22T01:08:01.8172418Z           ]
2026-06-22T01:08:01.8172518Z         },
2026-06-22T01:08:01.8172618Z         "unit": {
2026-06-22T01:08:01.8172738Z           "complete": true,
2026-06-22T01:08:01.8172847Z           "evidence": [
2026-06-22T01:08:01.8172951Z             {
2026-06-22T01:08:01.8173091Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8173199Z               "line": 2877
2026-06-22T01:08:01.8173301Z             },
2026-06-22T01:08:01.8173406Z             {
2026-06-22T01:08:01.8173556Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8173666Z               "line": 2941
2026-06-22T01:08:01.8173775Z             },
2026-06-22T01:08:01.8173873Z             {
2026-06-22T01:08:01.8174016Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8174127Z               "line": 2996
2026-06-22T01:08:01.8174240Z             }
2026-06-22T01:08:01.8174346Z           ]
2026-06-22T01:08:01.8174447Z         }
2026-06-22T01:08:01.8174550Z       }
2026-06-22T01:08:01.8174651Z     },
2026-06-22T01:08:01.8174751Z     {
2026-06-22T01:08:01.8174889Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-22T01:08:01.8175766Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-22T01:08:01.8175882Z       "requiredStages": [
2026-06-22T01:08:01.8175996Z         "doc",
2026-06-22T01:08:01.8176104Z         "impl",
2026-06-22T01:08:01.8176209Z         "unit"
2026-06-22T01:08:01.8176314Z       ],
2026-06-22T01:08:01.8176426Z       "stages": {
2026-06-22T01:08:01.8176526Z         "doc": {
2026-06-22T01:08:01.8176636Z           "complete": true,
2026-06-22T01:08:01.8176745Z           "evidence": [
2026-06-22T01:08:01.8176850Z             {
2026-06-22T01:08:01.8176989Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8177093Z               "line": 374
2026-06-22T01:08:01.8177194Z             }
2026-06-22T01:08:01.8177294Z           ]
2026-06-22T01:08:01.8177403Z         },
2026-06-22T01:08:01.8177509Z         "impl": {
2026-06-22T01:08:01.8177627Z           "complete": true,
2026-06-22T01:08:01.8177732Z           "evidence": [
2026-06-22T01:08:01.8177833Z             {
2026-06-22T01:08:01.8177981Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8178090Z               "line": 206
2026-06-22T01:08:01.8178201Z             },
2026-06-22T01:08:01.8178304Z             {
2026-06-22T01:08:01.8178444Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8178558Z               "line": 310
2026-06-22T01:08:01.8178662Z             },
2026-06-22T01:08:01.8178773Z             {
2026-06-22T01:08:01.8178905Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8179201Z               "line": 568
2026-06-22T01:08:01.8179300Z             },
2026-06-22T01:08:01.8179400Z             {
2026-06-22T01:08:01.8179539Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8179643Z               "line": 583
2026-06-22T01:08:01.8179754Z             },
2026-06-22T01:08:01.8179854Z             {
2026-06-22T01:08:01.8180001Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8180112Z               "line": 1318
2026-06-22T01:08:01.8180221Z             },
2026-06-22T01:08:01.8180325Z             {
2026-06-22T01:08:01.8180478Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8180693Z               "line": 443
2026-06-22T01:08:01.8180793Z             },
2026-06-22T01:08:01.8180902Z             {
2026-06-22T01:08:01.8181052Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8181174Z               "line": 590
2026-06-22T01:08:01.8181278Z             },
2026-06-22T01:08:01.8181383Z             {
2026-06-22T01:08:01.8181533Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8181638Z               "line": 731
2026-06-22T01:08:01.8181749Z             }
2026-06-22T01:08:01.8181848Z           ]
2026-06-22T01:08:01.8181953Z         },
2026-06-22T01:08:01.8182049Z         "int": {
2026-06-22T01:08:01.8182172Z           "complete": false,
2026-06-22T01:08:01.8182286Z           "evidence": []
2026-06-22T01:08:01.8182378Z         },
2026-06-22T01:08:01.8182486Z         "unit": {
2026-06-22T01:08:01.8182597Z           "complete": true,
2026-06-22T01:08:01.8182706Z           "evidence": [
2026-06-22T01:08:01.8182811Z             {
2026-06-22T01:08:01.8182960Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8183078Z               "line": 1155
2026-06-22T01:08:01.8183173Z             },
2026-06-22T01:08:01.8183280Z             {
2026-06-22T01:08:01.8183440Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-22T01:08:01.8183551Z               "line": 30
2026-06-22T01:08:01.8183656Z             }
2026-06-22T01:08:01.8183764Z           ]
2026-06-22T01:08:01.8183871Z         }
2026-06-22T01:08:01.8183966Z       }
2026-06-22T01:08:01.8184065Z     },
2026-06-22T01:08:01.8184164Z     {
2026-06-22T01:08:01.8184311Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-22T01:08:01.8187643Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-22T01:08:01.8187793Z       "requiredStages": [
2026-06-22T01:08:01.8187897Z         "impl",
2026-06-22T01:08:01.8188006Z         "unit",
2026-06-22T01:08:01.8188117Z         "int"
2026-06-22T01:08:01.8188231Z       ],
2026-06-22T01:08:01.8188345Z       "stages": {
2026-06-22T01:08:01.8188451Z         "doc": {
2026-06-22T01:08:01.8188565Z           "complete": false,
2026-06-22T01:08:01.8188674Z           "evidence": []
2026-06-22T01:08:01.8188785Z         },
2026-06-22T01:08:01.8188889Z         "impl": {
2026-06-22T01:08:01.8189236Z           "complete": true,
2026-06-22T01:08:01.8189348Z           "evidence": [
2026-06-22T01:08:01.8189447Z             {
2026-06-22T01:08:01.8189588Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8189694Z               "line": 718
2026-06-22T01:08:01.8189799Z             },
2026-06-22T01:08:01.8189903Z             {
2026-06-22T01:08:01.8190028Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8190137Z               "line": 887
2026-06-22T01:08:01.8190242Z             }
2026-06-22T01:08:01.8190348Z           ]
2026-06-22T01:08:01.8190448Z         },
2026-06-22T01:08:01.8190551Z         "int": {
2026-06-22T01:08:01.8190658Z           "complete": true,
2026-06-22T01:08:01.8190876Z           "evidence": [
2026-06-22T01:08:01.8190977Z             {
2026-06-22T01:08:01.8191119Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.8191239Z               "line": 420
2026-06-22T01:08:01.8191335Z             }
2026-06-22T01:08:01.8191438Z           ]
2026-06-22T01:08:01.8191543Z         },
2026-06-22T01:08:01.8191654Z         "unit": {
2026-06-22T01:08:01.8191772Z           "complete": true,
2026-06-22T01:08:01.8191871Z           "evidence": [
2026-06-22T01:08:01.8191976Z             {
2026-06-22T01:08:01.8192108Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8192217Z               "line": 1072
2026-06-22T01:08:01.8192323Z             },
2026-06-22T01:08:01.8192427Z             {
2026-06-22T01:08:01.8192551Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8192666Z               "line": 1096
2026-06-22T01:08:01.8192775Z             }
2026-06-22T01:08:01.8192866Z           ]
2026-06-22T01:08:01.8192971Z         }
2026-06-22T01:08:01.8193075Z       }
2026-06-22T01:08:01.8193167Z     },
2026-06-22T01:08:01.8193276Z     {
2026-06-22T01:08:01.8193423Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-22T01:08:01.8197163Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-22T01:08:01.8197291Z       "requiredStages": [
2026-06-22T01:08:01.8197396Z         "impl",
2026-06-22T01:08:01.8197504Z         "unit",
2026-06-22T01:08:01.8197603Z         "int"
2026-06-22T01:08:01.8197708Z       ],
2026-06-22T01:08:01.8197814Z       "stages": {
2026-06-22T01:08:01.8197922Z         "doc": {
2026-06-22T01:08:01.8198038Z           "complete": false,
2026-06-22T01:08:01.8198152Z           "evidence": []
2026-06-22T01:08:01.8198257Z         },
2026-06-22T01:08:01.8198362Z         "impl": {
2026-06-22T01:08:01.8198481Z           "complete": true,
2026-06-22T01:08:01.8198586Z           "evidence": [
2026-06-22T01:08:01.8198687Z             {
2026-06-22T01:08:01.8198910Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8199096Z               "line": 1417
2026-06-22T01:08:01.8199191Z             },
2026-06-22T01:08:01.8199297Z             {
2026-06-22T01:08:01.8199449Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8199559Z               "line": 1441
2026-06-22T01:08:01.8199660Z             }
2026-06-22T01:08:01.8199748Z           ]
2026-06-22T01:08:01.8199855Z         },
2026-06-22T01:08:01.8199955Z         "int": {
2026-06-22T01:08:01.8200059Z           "complete": true,
2026-06-22T01:08:01.8200168Z           "evidence": [
2026-06-22T01:08:01.8200268Z             {
2026-06-22T01:08:01.8200429Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T01:08:01.8200825Z               "line": 329
2026-06-22T01:08:01.8200917Z             }
2026-06-22T01:08:01.8201022Z           ]
2026-06-22T01:08:01.8201116Z         },
2026-06-22T01:08:01.8201222Z         "unit": {
2026-06-22T01:08:01.8201341Z           "complete": true,
2026-06-22T01:08:01.8201450Z           "evidence": [
2026-06-22T01:08:01.8201552Z             {
2026-06-22T01:08:01.8201689Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8201789Z               "line": 8169
2026-06-22T01:08:01.8201890Z             }
2026-06-22T01:08:01.8201989Z           ]
2026-06-22T01:08:01.8202090Z         }
2026-06-22T01:08:01.8202196Z       }
2026-06-22T01:08:01.8202289Z     },
2026-06-22T01:08:01.8202384Z     {
2026-06-22T01:08:01.8202508Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-22T01:08:01.8206403Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-22T01:08:01.8206589Z       "requiredStages": [
2026-06-22T01:08:01.8206699Z         "impl",
2026-06-22T01:08:01.8206803Z         "unit"
2026-06-22T01:08:01.8206918Z       ],
2026-06-22T01:08:01.8207018Z       "stages": {
2026-06-22T01:08:01.8207122Z         "doc": {
2026-06-22T01:08:01.8207247Z           "complete": false,
2026-06-22T01:08:01.8207362Z           "evidence": []
2026-06-22T01:08:01.8207466Z         },
2026-06-22T01:08:01.8207572Z         "impl": {
2026-06-22T01:08:01.8207691Z           "complete": true,
2026-06-22T01:08:01.8207803Z           "evidence": [
2026-06-22T01:08:01.8207903Z             {
2026-06-22T01:08:01.8208031Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8208139Z               "line": 910
2026-06-22T01:08:01.8208250Z             }
2026-06-22T01:08:01.8208369Z           ]
2026-06-22T01:08:01.8208473Z         },
2026-06-22T01:08:01.8208584Z         "int": {
2026-06-22T01:08:01.8208694Z           "complete": false,
2026-06-22T01:08:01.8208812Z           "evidence": []
2026-06-22T01:08:01.8208908Z         },
2026-06-22T01:08:01.8209093Z         "unit": {
2026-06-22T01:08:01.8209209Z           "complete": true,
2026-06-22T01:08:01.8209431Z           "evidence": [
2026-06-22T01:08:01.8209538Z             {
2026-06-22T01:08:01.8209671Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8209790Z               "line": 1112
2026-06-22T01:08:01.8209895Z             }
2026-06-22T01:08:01.8209999Z           ]
2026-06-22T01:08:01.8210100Z         }
2026-06-22T01:08:01.8210201Z       }
2026-06-22T01:08:01.8210304Z     },
2026-06-22T01:08:01.8210400Z     {
2026-06-22T01:08:01.8210549Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-22T01:08:01.8215073Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T01:08:01.8215388Z       "requiredStages": [
2026-06-22T01:08:01.8215493Z         "impl",
2026-06-22T01:08:01.8215594Z         "unit"
2026-06-22T01:08:01.8215698Z       ],
2026-06-22T01:08:01.8215807Z       "stages": {
2026-06-22T01:08:01.8215916Z         "doc": {
2026-06-22T01:08:01.8216025Z           "complete": false,
2026-06-22T01:08:01.8216143Z           "evidence": []
2026-06-22T01:08:01.8216243Z         },
2026-06-22T01:08:01.8216339Z         "impl": {
2026-06-22T01:08:01.8216452Z           "complete": true,
2026-06-22T01:08:01.8216563Z           "evidence": [
2026-06-22T01:08:01.8216692Z             {
2026-06-22T01:08:01.8216829Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8216944Z               "line": 264
2026-06-22T01:08:01.8217048Z             }
2026-06-22T01:08:01.8217139Z           ]
2026-06-22T01:08:01.8217245Z         },
2026-06-22T01:08:01.8217349Z         "int": {
2026-06-22T01:08:01.8217478Z           "complete": false,
2026-06-22T01:08:01.8217588Z           "evidence": []
2026-06-22T01:08:01.8217702Z         },
2026-06-22T01:08:01.8217803Z         "unit": {
2026-06-22T01:08:01.8217922Z           "complete": true,
2026-06-22T01:08:01.8218031Z           "evidence": [
2026-06-22T01:08:01.8218132Z             {
2026-06-22T01:08:01.8218269Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8218382Z               "line": 1094
2026-06-22T01:08:01.8218488Z             },
2026-06-22T01:08:01.8218591Z             {
2026-06-22T01:08:01.8218723Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8218843Z               "line": 1225
2026-06-22T01:08:01.8219028Z             },
2026-06-22T01:08:01.8219135Z             {
2026-06-22T01:08:01.8219258Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8219377Z               "line": 1227
2026-06-22T01:08:01.8219487Z             }
2026-06-22T01:08:01.8219587Z           ]
2026-06-22T01:08:01.8219802Z         }
2026-06-22T01:08:01.8219901Z       }
2026-06-22T01:08:01.8220006Z     },
2026-06-22T01:08:01.8220108Z     {
2026-06-22T01:08:01.8220255Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-22T01:08:01.8220588Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-22T01:08:01.8220718Z       "requiredStages": [
2026-06-22T01:08:01.8220822Z         "impl",
2026-06-22T01:08:01.8220927Z         "unit"
2026-06-22T01:08:01.8221033Z       ],
2026-06-22T01:08:01.8221137Z       "stages": {
2026-06-22T01:08:01.8221235Z         "doc": {
2026-06-22T01:08:01.8221365Z           "complete": true,
2026-06-22T01:08:01.8221573Z           "evidence": [
2026-06-22T01:08:01.8221680Z             {
2026-06-22T01:08:01.8221818Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8221926Z               "line": 139
2026-06-22T01:08:01.8222033Z             }
2026-06-22T01:08:01.8222138Z           ]
2026-06-22T01:08:01.8222246Z         },
2026-06-22T01:08:01.8222357Z         "impl": {
2026-06-22T01:08:01.8222481Z           "complete": true,
2026-06-22T01:08:01.8222585Z           "evidence": [
2026-06-22T01:08:01.8222691Z             {
2026-06-22T01:08:01.8222833Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T01:08:01.8222939Z               "line": 29
2026-06-22T01:08:01.8223039Z             },
2026-06-22T01:08:01.8223138Z             {
2026-06-22T01:08:01.8223273Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T01:08:01.8223386Z               "line": 67
2026-06-22T01:08:01.8223495Z             },
2026-06-22T01:08:01.8223600Z             {
2026-06-22T01:08:01.8223750Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.8223869Z               "line": 101
2026-06-22T01:08:01.8223970Z             },
2026-06-22T01:08:01.8224070Z             {
2026-06-22T01:08:01.8224222Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8224341Z               "line": 30
2026-06-22T01:08:01.8224445Z             },
2026-06-22T01:08:01.8224547Z             {
2026-06-22T01:08:01.8224695Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.8224798Z               "line": 48
2026-06-22T01:08:01.8224900Z             }
2026-06-22T01:08:01.8224999Z           ]
2026-06-22T01:08:01.8225103Z         },
2026-06-22T01:08:01.8225196Z         "int": {
2026-06-22T01:08:01.8225323Z           "complete": false,
2026-06-22T01:08:01.8225428Z           "evidence": []
2026-06-22T01:08:01.8225534Z         },
2026-06-22T01:08:01.8225643Z         "unit": {
2026-06-22T01:08:01.8225762Z           "complete": true,
2026-06-22T01:08:01.8225868Z           "evidence": [
2026-06-22T01:08:01.8225976Z             {
2026-06-22T01:08:01.8226130Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8226254Z               "line": 162
2026-06-22T01:08:01.8226357Z             }
2026-06-22T01:08:01.8226462Z           ]
2026-06-22T01:08:01.8226562Z         }
2026-06-22T01:08:01.8226660Z       }
2026-06-22T01:08:01.8226760Z     },
2026-06-22T01:08:01.8226856Z     {
2026-06-22T01:08:01.8227003Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-22T01:08:01.8227414Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-22T01:08:01.8227537Z       "requiredStages": [
2026-06-22T01:08:01.8227642Z         "doc",
2026-06-22T01:08:01.8227748Z         "impl",
2026-06-22T01:08:01.8227852Z         "unit"
2026-06-22T01:08:01.8227957Z       ],
2026-06-22T01:08:01.8228063Z       "stages": {
2026-06-22T01:08:01.8228167Z         "doc": {
2026-06-22T01:08:01.8228290Z           "complete": true,
2026-06-22T01:08:01.8228411Z           "evidence": [
2026-06-22T01:08:01.8228514Z             {
2026-06-22T01:08:01.8228653Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8228760Z               "line": 151
2026-06-22T01:08:01.8228867Z             }
2026-06-22T01:08:01.8229048Z           ]
2026-06-22T01:08:01.8229297Z         },
2026-06-22T01:08:01.8229404Z         "impl": {
2026-06-22T01:08:01.8229527Z           "complete": true,
2026-06-22T01:08:01.8229637Z           "evidence": [
2026-06-22T01:08:01.8229733Z             {
2026-06-22T01:08:01.8229889Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8230000Z               "line": 22
2026-06-22T01:08:01.8230104Z             }
2026-06-22T01:08:01.8230209Z           ]
2026-06-22T01:08:01.8230310Z         },
2026-06-22T01:08:01.8230414Z         "int": {
2026-06-22T01:08:01.8230528Z           "complete": false,
2026-06-22T01:08:01.8230644Z           "evidence": []
2026-06-22T01:08:01.8230743Z         },
2026-06-22T01:08:01.8230934Z         "unit": {
2026-06-22T01:08:01.8231048Z           "complete": true,
2026-06-22T01:08:01.8231158Z           "evidence": [
2026-06-22T01:08:01.8231264Z             {
2026-06-22T01:08:01.8231420Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8231540Z               "line": 298
2026-06-22T01:08:01.8231645Z             }
2026-06-22T01:08:01.8231753Z           ]
2026-06-22T01:08:01.8231862Z         }
2026-06-22T01:08:01.8231963Z       }
2026-06-22T01:08:01.8232068Z     },
2026-06-22T01:08:01.8232172Z     {
2026-06-22T01:08:01.8232316Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-22T01:08:01.8232773Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-22T01:08:01.8232894Z       "requiredStages": [
2026-06-22T01:08:01.8233002Z         "impl",
2026-06-22T01:08:01.8233107Z         "unit"
2026-06-22T01:08:01.8233208Z       ],
2026-06-22T01:08:01.8233322Z       "stages": {
2026-06-22T01:08:01.8233426Z         "doc": {
2026-06-22T01:08:01.8233537Z           "complete": true,
2026-06-22T01:08:01.8233646Z           "evidence": [
2026-06-22T01:08:01.8233746Z             {
2026-06-22T01:08:01.8233890Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8234003Z               "line": 145
2026-06-22T01:08:01.8234116Z             }
2026-06-22T01:08:01.8234226Z           ]
2026-06-22T01:08:01.8234325Z         },
2026-06-22T01:08:01.8234434Z         "impl": {
2026-06-22T01:08:01.8234545Z           "complete": true,
2026-06-22T01:08:01.8234658Z           "evidence": [
2026-06-22T01:08:01.8234753Z             {
2026-06-22T01:08:01.8234921Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T01:08:01.8235034Z               "line": 160
2026-06-22T01:08:01.8235140Z             },
2026-06-22T01:08:01.8235250Z             {
2026-06-22T01:08:01.8235407Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8235536Z               "line": 200
2026-06-22T01:08:01.8235640Z             },
2026-06-22T01:08:01.8235746Z             {
2026-06-22T01:08:01.8235898Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8236012Z               "line": 298
2026-06-22T01:08:01.8236123Z             },
2026-06-22T01:08:01.8236231Z             {
2026-06-22T01:08:01.8236376Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:08:01.8236490Z               "line": 20
2026-06-22T01:08:01.8236590Z             }
2026-06-22T01:08:01.8236695Z           ]
2026-06-22T01:08:01.8236800Z         },
2026-06-22T01:08:01.8236903Z         "int": {
2026-06-22T01:08:01.8237022Z           "complete": false,
2026-06-22T01:08:01.8237140Z           "evidence": []
2026-06-22T01:08:01.8237239Z         },
2026-06-22T01:08:01.8237344Z         "unit": {
2026-06-22T01:08:01.8237445Z           "complete": true,
2026-06-22T01:08:01.8237553Z           "evidence": [
2026-06-22T01:08:01.8237664Z             {
2026-06-22T01:08:01.8237826Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8237954Z               "line": 937
2026-06-22T01:08:01.8238060Z             },
2026-06-22T01:08:01.8238165Z             {
2026-06-22T01:08:01.8238332Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T01:08:01.8238512Z               "line": 88
2026-06-22T01:08:01.8238618Z             },
2026-06-22T01:08:01.8238714Z             {
2026-06-22T01:08:01.8238865Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8239052Z               "line": 851
2026-06-22T01:08:01.8239147Z             },
2026-06-22T01:08:01.8239253Z             {
2026-06-22T01:08:01.8239394Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8239517Z               "line": 870
2026-06-22T01:08:01.8239622Z             },
2026-06-22T01:08:01.8239726Z             {
2026-06-22T01:08:01.8239882Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8240087Z               "line": 279
2026-06-22T01:08:01.8240187Z             },
2026-06-22T01:08:01.8240288Z             {
2026-06-22T01:08:01.8240440Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:08:01.8240536Z               "line": 82
2026-06-22T01:08:01.8240640Z             },
2026-06-22T01:08:01.8240754Z             {
2026-06-22T01:08:01.8240899Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:08:01.8241003Z               "line": 99
2026-06-22T01:08:01.8241108Z             },
2026-06-22T01:08:01.8241214Z             {
2026-06-22T01:08:01.8241356Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T01:08:01.8241465Z               "line": 119
2026-06-22T01:08:01.8241567Z             }
2026-06-22T01:08:01.8241660Z           ]
2026-06-22T01:08:01.8241771Z         }
2026-06-22T01:08:01.8241867Z       }
2026-06-22T01:08:01.8241975Z     },
2026-06-22T01:08:01.8242076Z     {
2026-06-22T01:08:01.8242224Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-22T01:08:01.8243619Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-22T01:08:01.8243749Z       "requiredStages": [
2026-06-22T01:08:01.8243858Z         "doc",
2026-06-22T01:08:01.8243963Z         "impl",
2026-06-22T01:08:01.8244069Z         "unit"
2026-06-22T01:08:01.8244173Z       ],
2026-06-22T01:08:01.8244277Z       "stages": {
2026-06-22T01:08:01.8244388Z         "doc": {
2026-06-22T01:08:01.8244493Z           "complete": true,
2026-06-22T01:08:01.8244610Z           "evidence": [
2026-06-22T01:08:01.8244710Z             {
2026-06-22T01:08:01.8244833Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8244965Z               "line": 157
2026-06-22T01:08:01.8245071Z             }
2026-06-22T01:08:01.8245175Z           ]
2026-06-22T01:08:01.8245275Z         },
2026-06-22T01:08:01.8245381Z         "impl": {
2026-06-22T01:08:01.8245490Z           "complete": true,
2026-06-22T01:08:01.8245599Z           "evidence": [
2026-06-22T01:08:01.8245710Z             {
2026-06-22T01:08:01.8245862Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.8245982Z               "line": 137
2026-06-22T01:08:01.8246087Z             },
2026-06-22T01:08:01.8246191Z             {
2026-06-22T01:08:01.8246354Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8246641Z               "line": 564
2026-06-22T01:08:01.8246739Z             },
2026-06-22T01:08:01.8246835Z             {
2026-06-22T01:08:01.8246988Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8247106Z               "line": 571
2026-06-22T01:08:01.8247212Z             },
2026-06-22T01:08:01.8247322Z             {
2026-06-22T01:08:01.8247472Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8247592Z               "line": 227
2026-06-22T01:08:01.8247686Z             }
2026-06-22T01:08:01.8247790Z           ]
2026-06-22T01:08:01.8247890Z         },
2026-06-22T01:08:01.8248105Z         "int": {
2026-06-22T01:08:01.8248229Z           "complete": false,
2026-06-22T01:08:01.8248343Z           "evidence": []
2026-06-22T01:08:01.8248447Z         },
2026-06-22T01:08:01.8248554Z         "unit": {
2026-06-22T01:08:01.8248667Z           "complete": true,
2026-06-22T01:08:01.8248772Z           "evidence": [
2026-06-22T01:08:01.8248873Z             {
2026-06-22T01:08:01.8249110Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8249226Z               "line": 1622
2026-06-22T01:08:01.8249325Z             },
2026-06-22T01:08:01.8249415Z             {
2026-06-22T01:08:01.8249574Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8249779Z               "line": 1680
2026-06-22T01:08:01.8249884Z             },
2026-06-22T01:08:01.8249992Z             {
2026-06-22T01:08:01.8250140Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8250249Z               "line": 883
2026-06-22T01:08:01.8250352Z             }
2026-06-22T01:08:01.8250462Z           ]
2026-06-22T01:08:01.8250557Z         }
2026-06-22T01:08:01.8250657Z       }
2026-06-22T01:08:01.8250766Z     },
2026-06-22T01:08:01.8250863Z     {
2026-06-22T01:08:01.8251009Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-22T01:08:01.8251224Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-22T01:08:01.8251348Z       "requiredStages": [
2026-06-22T01:08:01.8251444Z         "impl",
2026-06-22T01:08:01.8251553Z         "unit"
2026-06-22T01:08:01.8251663Z       ],
2026-06-22T01:08:01.8251764Z       "stages": {
2026-06-22T01:08:01.8251873Z         "doc": {
2026-06-22T01:08:01.8251982Z           "complete": false,
2026-06-22T01:08:01.8252098Z           "evidence": []
2026-06-22T01:08:01.8255184Z         },
2026-06-22T01:08:01.8255314Z         "impl": {
2026-06-22T01:08:01.8255440Z           "complete": true,
2026-06-22T01:08:01.8255578Z           "evidence": [
2026-06-22T01:08:01.8255679Z             {
2026-06-22T01:08:01.8255840Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8255955Z               "line": 15
2026-06-22T01:08:01.8256050Z             },
2026-06-22T01:08:01.8256155Z             {
2026-06-22T01:08:01.8256313Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8256422Z               "line": 55
2026-06-22T01:08:01.8256532Z             },
2026-06-22T01:08:01.8256637Z             {
2026-06-22T01:08:01.8256789Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8256900Z               "line": 66
2026-06-22T01:08:01.8256999Z             },
2026-06-22T01:08:01.8257099Z             {
2026-06-22T01:08:01.8257248Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8257361Z               "line": 115
2026-06-22T01:08:01.8257452Z             },
2026-06-22T01:08:01.8257558Z             {
2026-06-22T01:08:01.8257700Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8257815Z               "line": 138
2026-06-22T01:08:01.8257925Z             }
2026-06-22T01:08:01.8258028Z           ]
2026-06-22T01:08:01.8258137Z         },
2026-06-22T01:08:01.8258232Z         "int": {
2026-06-22T01:08:01.8258359Z           "complete": false,
2026-06-22T01:08:01.8258469Z           "evidence": []
2026-06-22T01:08:01.8258565Z         },
2026-06-22T01:08:01.8258660Z         "unit": {
2026-06-22T01:08:01.8258774Z           "complete": true,
2026-06-22T01:08:01.8258880Z           "evidence": [
2026-06-22T01:08:01.8259065Z             {
2026-06-22T01:08:01.8259209Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8259323Z               "line": 363
2026-06-22T01:08:01.8259433Z             },
2026-06-22T01:08:01.8259537Z             {
2026-06-22T01:08:01.8259680Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8259796Z               "line": 369
2026-06-22T01:08:01.8259895Z             },
2026-06-22T01:08:01.8259995Z             {
2026-06-22T01:08:01.8260272Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8260378Z               "line": 383
2026-06-22T01:08:01.8260487Z             },
2026-06-22T01:08:01.8260576Z             {
2026-06-22T01:08:01.8260714Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8260827Z               "line": 392
2026-06-22T01:08:01.8260921Z             },
2026-06-22T01:08:01.8261027Z             {
2026-06-22T01:08:01.8261175Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8261274Z               "line": 195
2026-06-22T01:08:01.8261375Z             },
2026-06-22T01:08:01.8261470Z             {
2026-06-22T01:08:01.8261728Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8261833Z               "line": 208
2026-06-22T01:08:01.8261932Z             },
2026-06-22T01:08:01.8262033Z             {
2026-06-22T01:08:01.8262181Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8262280Z               "line": 271
2026-06-22T01:08:01.8262391Z             },
2026-06-22T01:08:01.8262496Z             {
2026-06-22T01:08:01.8262639Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8262748Z               "line": 290
2026-06-22T01:08:01.8262848Z             },
2026-06-22T01:08:01.8262954Z             {
2026-06-22T01:08:01.8263091Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8263206Z               "line": 319
2026-06-22T01:08:01.8263307Z             }
2026-06-22T01:08:01.8263406Z           ]
2026-06-22T01:08:01.8263509Z         }
2026-06-22T01:08:01.8263610Z       }
2026-06-22T01:08:01.8263716Z     },
2026-06-22T01:08:01.8263819Z     {
2026-06-22T01:08:01.8263954Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-22T01:08:01.8264254Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-22T01:08:01.8264359Z       "requiredStages": [
2026-06-22T01:08:01.8264468Z         "impl",
2026-06-22T01:08:01.8264579Z         "unit",
2026-06-22T01:08:01.8264682Z         "int"
2026-06-22T01:08:01.8264777Z       ],
2026-06-22T01:08:01.8264888Z       "stages": {
2026-06-22T01:08:01.8264992Z         "doc": {
2026-06-22T01:08:01.8265116Z           "complete": false,
2026-06-22T01:08:01.8265227Z           "evidence": []
2026-06-22T01:08:01.8265330Z         },
2026-06-22T01:08:01.8265446Z         "impl": {
2026-06-22T01:08:01.8265557Z           "complete": true,
2026-06-22T01:08:01.8265664Z           "evidence": [
2026-06-22T01:08:01.8265764Z             {
2026-06-22T01:08:01.8265907Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8266024Z               "line": 480
2026-06-22T01:08:01.8266134Z             },
2026-06-22T01:08:01.8266234Z             {
2026-06-22T01:08:01.8266377Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8266491Z               "line": 1010
2026-06-22T01:08:01.8266592Z             },
2026-06-22T01:08:01.8266696Z             {
2026-06-22T01:08:01.8266831Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8266935Z               "line": 1055
2026-06-22T01:08:01.8267044Z             },
2026-06-22T01:08:01.8267141Z             {
2026-06-22T01:08:01.8267283Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8267392Z               "line": 1080
2026-06-22T01:08:01.8267493Z             },
2026-06-22T01:08:01.8267598Z             {
2026-06-22T01:08:01.8267732Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8267850Z               "line": 1874
2026-06-22T01:08:01.8267950Z             },
2026-06-22T01:08:01.8268051Z             {
2026-06-22T01:08:01.8268198Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8268313Z               "line": 2156
2026-06-22T01:08:01.8268419Z             },
2026-06-22T01:08:01.8268517Z             {
2026-06-22T01:08:01.8268669Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8268774Z               "line": 2287
2026-06-22T01:08:01.8269034Z             },
2026-06-22T01:08:01.8269130Z             {
2026-06-22T01:08:01.8269277Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8269388Z               "line": 2335
2026-06-22T01:08:01.8269488Z             },
2026-06-22T01:08:01.8269587Z             {
2026-06-22T01:08:01.8269731Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.8269831Z               "line": 46
2026-06-22T01:08:01.8269930Z             },
2026-06-22T01:08:01.8270032Z             {
2026-06-22T01:08:01.8270178Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.8270289Z               "line": 200
2026-06-22T01:08:01.8270498Z             },
2026-06-22T01:08:01.8270604Z             {
2026-06-22T01:08:01.8270746Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.8270851Z               "line": 132
2026-06-22T01:08:01.8270952Z             },
2026-06-22T01:08:01.8271052Z             {
2026-06-22T01:08:01.8271188Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.8271308Z               "line": 137
2026-06-22T01:08:01.8271406Z             },
2026-06-22T01:08:01.8271510Z             {
2026-06-22T01:08:01.8271644Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.8271749Z               "line": 183
2026-06-22T01:08:01.8271858Z             }
2026-06-22T01:08:01.8271993Z           ]
2026-06-22T01:08:01.8272106Z         },
2026-06-22T01:08:01.8272206Z         "int": {
2026-06-22T01:08:01.8272321Z           "complete": true,
2026-06-22T01:08:01.8272435Z           "evidence": [
2026-06-22T01:08:01.8272536Z             {
2026-06-22T01:08:01.8272702Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-22T01:08:01.8272797Z               "line": 27
2026-06-22T01:08:01.8272903Z             },
2026-06-22T01:08:01.8272998Z             {
2026-06-22T01:08:01.8273160Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T01:08:01.8273266Z               "line": 148
2026-06-22T01:08:01.8273360Z             },
2026-06-22T01:08:01.8273471Z             {
2026-06-22T01:08:01.8273618Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T01:08:01.8273728Z               "line": 200
2026-06-22T01:08:01.8273834Z             }
2026-06-22T01:08:01.8273933Z           ]
2026-06-22T01:08:01.8274041Z         },
2026-06-22T01:08:01.8274136Z         "unit": {
2026-06-22T01:08:01.8274262Z           "complete": true,
2026-06-22T01:08:01.8274365Z           "evidence": [
2026-06-22T01:08:01.8274476Z             {
2026-06-22T01:08:01.8274624Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.8274742Z               "line": 366
2026-06-22T01:08:01.8274853Z             },
2026-06-22T01:08:01.8274957Z             {
2026-06-22T01:08:01.8275100Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.8275205Z               "line": 398
2026-06-22T01:08:01.8275314Z             },
2026-06-22T01:08:01.8275415Z             {
2026-06-22T01:08:01.8275553Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T01:08:01.8275657Z               "line": 419
2026-06-22T01:08:01.8275759Z             },
2026-06-22T01:08:01.8275863Z             {
2026-06-22T01:08:01.8276006Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8276126Z               "line": 631
2026-06-22T01:08:01.8276224Z             },
2026-06-22T01:08:01.8276328Z             {
2026-06-22T01:08:01.8276477Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:08:01.8276584Z               "line": 289
2026-06-22T01:08:01.8276694Z             },
2026-06-22T01:08:01.8276799Z             {
2026-06-22T01:08:01.8276946Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T01:08:01.8277051Z               "line": 230
2026-06-22T01:08:01.8277162Z             },
2026-06-22T01:08:01.8277266Z             {
2026-06-22T01:08:01.8277405Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.8277633Z               "line": 526
2026-06-22T01:08:01.8277739Z             },
2026-06-22T01:08:01.8277848Z             {
2026-06-22T01:08:01.8277987Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.8278105Z               "line": 556
2026-06-22T01:08:01.8278210Z             }
2026-06-22T01:08:01.8278311Z           ]
2026-06-22T01:08:01.8278415Z         }
2026-06-22T01:08:01.8278515Z       }
2026-06-22T01:08:01.8278617Z     },
2026-06-22T01:08:01.8278716Z     {
2026-06-22T01:08:01.8278868Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-22T01:08:01.8280734Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-22T01:08:01.8280958Z       "requiredStages": [
2026-06-22T01:08:01.8281067Z         "doc",
2026-06-22T01:08:01.8281178Z         "impl",
2026-06-22T01:08:01.8281278Z         "unit"
2026-06-22T01:08:01.8281382Z       ],
2026-06-22T01:08:01.8281488Z       "stages": {
2026-06-22T01:08:01.8281593Z         "doc": {
2026-06-22T01:08:01.8281701Z           "complete": true,
2026-06-22T01:08:01.8281824Z           "evidence": [
2026-06-22T01:08:01.8281924Z             {
2026-06-22T01:08:01.8282065Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8282199Z               "line": 314
2026-06-22T01:08:01.8282295Z             }
2026-06-22T01:08:01.8282399Z           ]
2026-06-22T01:08:01.8282500Z         },
2026-06-22T01:08:01.8282605Z         "impl": {
2026-06-22T01:08:01.8282723Z           "complete": true,
2026-06-22T01:08:01.8282834Z           "evidence": [
2026-06-22T01:08:01.8282948Z             {
2026-06-22T01:08:01.8283111Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T01:08:01.8283224Z               "line": 33
2026-06-22T01:08:01.8283319Z             },
2026-06-22T01:08:01.8283430Z             {
2026-06-22T01:08:01.8283596Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T01:08:01.8283701Z               "line": 39
2026-06-22T01:08:01.8283812Z             }
2026-06-22T01:08:01.8283915Z           ]
2026-06-22T01:08:01.8284021Z         },
2026-06-22T01:08:01.8284122Z         "int": {
2026-06-22T01:08:01.8284244Z           "complete": false,
2026-06-22T01:08:01.8284351Z           "evidence": []
2026-06-22T01:08:01.8284456Z         },
2026-06-22T01:08:01.8284559Z         "unit": {
2026-06-22T01:08:01.8284668Z           "complete": true,
2026-06-22T01:08:01.8284784Z           "evidence": [
2026-06-22T01:08:01.8284883Z             {
2026-06-22T01:08:01.8285050Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T01:08:01.8285165Z               "line": 95
2026-06-22T01:08:01.8285273Z             }
2026-06-22T01:08:01.8285374Z           ]
2026-06-22T01:08:01.8285479Z         }
2026-06-22T01:08:01.8285588Z       }
2026-06-22T01:08:01.8285685Z     },
2026-06-22T01:08:01.8285794Z     {
2026-06-22T01:08:01.8285927Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-22T01:08:01.8288365Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-22T01:08:01.8288609Z       "requiredStages": [
2026-06-22T01:08:01.8288718Z         "impl",
2026-06-22T01:08:01.8288827Z         "unit"
2026-06-22T01:08:01.8288924Z       ],
2026-06-22T01:08:01.8289118Z       "stages": {
2026-06-22T01:08:01.8289225Z         "doc": {
2026-06-22T01:08:01.8289346Z           "complete": false,
2026-06-22T01:08:01.8289453Z           "evidence": []
2026-06-22T01:08:01.8289549Z         },
2026-06-22T01:08:01.8289770Z         "impl": {
2026-06-22T01:08:01.8289890Z           "complete": true,
2026-06-22T01:08:01.8289988Z           "evidence": [
2026-06-22T01:08:01.8290092Z             {
2026-06-22T01:08:01.8290265Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8290378Z               "line": 488
2026-06-22T01:08:01.8290479Z             }
2026-06-22T01:08:01.8290579Z           ]
2026-06-22T01:08:01.8290674Z         },
2026-06-22T01:08:01.8290770Z         "int": {
2026-06-22T01:08:01.8290889Z           "complete": false,
2026-06-22T01:08:01.8291003Z           "evidence": []
2026-06-22T01:08:01.8291104Z         },
2026-06-22T01:08:01.8291208Z         "unit": {
2026-06-22T01:08:01.8291322Z           "complete": true,
2026-06-22T01:08:01.8291443Z           "evidence": [
2026-06-22T01:08:01.8291542Z             {
2026-06-22T01:08:01.8291695Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8291810Z               "line": 1466
2026-06-22T01:08:01.8291913Z             }
2026-06-22T01:08:01.8292024Z           ]
2026-06-22T01:08:01.8292125Z         }
2026-06-22T01:08:01.8292218Z       }
2026-06-22T01:08:01.8292318Z     },
2026-06-22T01:08:01.8292423Z     {
2026-06-22T01:08:01.8292554Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-22T01:08:01.8294715Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-22T01:08:01.8294862Z       "requiredStages": [
2026-06-22T01:08:01.8294973Z         "unit"
2026-06-22T01:08:01.8295076Z       ],
2026-06-22T01:08:01.8295175Z       "stages": {
2026-06-22T01:08:01.8295281Z         "doc": {
2026-06-22T01:08:01.8295405Z           "complete": false,
2026-06-22T01:08:01.8295514Z           "evidence": []
2026-06-22T01:08:01.8295629Z         },
2026-06-22T01:08:01.8295739Z         "impl": {
2026-06-22T01:08:01.8295862Z           "complete": true,
2026-06-22T01:08:01.8295996Z           "evidence": [
2026-06-22T01:08:01.8296101Z             {
2026-06-22T01:08:01.8296240Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8296349Z               "line": 3520
2026-06-22T01:08:01.8296454Z             },
2026-06-22T01:08:01.8296560Z             {
2026-06-22T01:08:01.8296688Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8296801Z               "line": 3572
2026-06-22T01:08:01.8296898Z             },
2026-06-22T01:08:01.8297011Z             {
2026-06-22T01:08:01.8297141Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8297246Z               "line": 3617
2026-06-22T01:08:01.8297355Z             },
2026-06-22T01:08:01.8297445Z             {
2026-06-22T01:08:01.8297597Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8297799Z               "line": 92
2026-06-22T01:08:01.8297901Z             },
2026-06-22T01:08:01.8298005Z             {
2026-06-22T01:08:01.8298148Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8298262Z               "line": 148
2026-06-22T01:08:01.8298367Z             },
2026-06-22T01:08:01.8298478Z             {
2026-06-22T01:08:01.8298616Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8298724Z               "line": 192
2026-06-22T01:08:01.8298826Z             },
2026-06-22T01:08:01.8298935Z             {
2026-06-22T01:08:01.8299159Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8299274Z               "line": 200
2026-06-22T01:08:01.8299498Z             },
2026-06-22T01:08:01.8299602Z             {
2026-06-22T01:08:01.8299756Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8299860Z               "line": 211
2026-06-22T01:08:01.8299960Z             },
2026-06-22T01:08:01.8300066Z             {
2026-06-22T01:08:01.8300208Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8300326Z               "line": 265
2026-06-22T01:08:01.8300431Z             },
2026-06-22T01:08:01.8300539Z             {
2026-06-22T01:08:01.8300671Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8300782Z               "line": 279
2026-06-22T01:08:01.8300886Z             }
2026-06-22T01:08:01.8300991Z           ]
2026-06-22T01:08:01.8301102Z         },
2026-06-22T01:08:01.8301211Z         "int": {
2026-06-22T01:08:01.8301335Z           "complete": false,
2026-06-22T01:08:01.8301449Z           "evidence": []
2026-06-22T01:08:01.8301539Z         },
2026-06-22T01:08:01.8301649Z         "unit": {
2026-06-22T01:08:01.8301759Z           "complete": true,
2026-06-22T01:08:01.8301868Z           "evidence": [
2026-06-22T01:08:01.8301974Z             {
2026-06-22T01:08:01.8302159Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8302260Z               "line": 419
2026-06-22T01:08:01.8302375Z             },
2026-06-22T01:08:01.8302483Z             {
2026-06-22T01:08:01.8302652Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8302769Z               "line": 470
2026-06-22T01:08:01.8302873Z             },
2026-06-22T01:08:01.8302978Z             {
2026-06-22T01:08:01.8303110Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8303238Z               "line": 499
2026-06-22T01:08:01.8303353Z             },
2026-06-22T01:08:01.8303458Z             {
2026-06-22T01:08:01.8303601Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8303706Z               "line": 526
2026-06-22T01:08:01.8303815Z             }
2026-06-22T01:08:01.8303945Z           ]
2026-06-22T01:08:01.8304064Z         }
2026-06-22T01:08:01.8304158Z       }
2026-06-22T01:08:01.8304269Z     },
2026-06-22T01:08:01.8304383Z     {
2026-06-22T01:08:01.8304521Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-22T01:08:01.8304745Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-22T01:08:01.8304860Z       "requiredStages": [
2026-06-22T01:08:01.8304965Z         "impl",
2026-06-22T01:08:01.8305069Z         "unit"
2026-06-22T01:08:01.8305171Z       ],
2026-06-22T01:08:01.8305307Z       "stages": {
2026-06-22T01:08:01.8305398Z         "doc": {
2026-06-22T01:08:01.8305524Z           "complete": false,
2026-06-22T01:08:01.8305636Z           "evidence": []
2026-06-22T01:08:01.8305741Z         },
2026-06-22T01:08:01.8305856Z         "impl": {
2026-06-22T01:08:01.8305965Z           "complete": true,
2026-06-22T01:08:01.8306074Z           "evidence": [
2026-06-22T01:08:01.8306180Z             {
2026-06-22T01:08:01.8306356Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8306476Z               "line": 62
2026-06-22T01:08:01.8306585Z             },
2026-06-22T01:08:01.8306694Z             {
2026-06-22T01:08:01.8306848Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8307061Z               "line": 71
2026-06-22T01:08:01.8307167Z             },
2026-06-22T01:08:01.8307271Z             {
2026-06-22T01:08:01.8307435Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8307543Z               "line": 80
2026-06-22T01:08:01.8307658Z             },
2026-06-22T01:08:01.8307759Z             {
2026-06-22T01:08:01.8307905Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8308014Z               "line": 88
2026-06-22T01:08:01.8308124Z             },
2026-06-22T01:08:01.8308231Z             {
2026-06-22T01:08:01.8308374Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8308560Z               "line": 33
2026-06-22T01:08:01.8308660Z             },
2026-06-22T01:08:01.8308761Z             {
2026-06-22T01:08:01.8308903Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8309143Z               "line": 65
2026-06-22T01:08:01.8309256Z             },
2026-06-22T01:08:01.8309353Z             {
2026-06-22T01:08:01.8309509Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8309614Z               "line": 74
2026-06-22T01:08:01.8309724Z             },
2026-06-22T01:08:01.8309824Z             {
2026-06-22T01:08:01.8309962Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8310077Z               "line": 93
2026-06-22T01:08:01.8310182Z             },
2026-06-22T01:08:01.8310282Z             {
2026-06-22T01:08:01.8310425Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8310534Z               "line": 102
2026-06-22T01:08:01.8310636Z             },
2026-06-22T01:08:01.8310740Z             {
2026-06-22T01:08:01.8310881Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8310995Z               "line": 111
2026-06-22T01:08:01.8311103Z             },
2026-06-22T01:08:01.8311208Z             {
2026-06-22T01:08:01.8311347Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8311456Z               "line": 122
2026-06-22T01:08:01.8311565Z             },
2026-06-22T01:08:01.8311667Z             {
2026-06-22T01:08:01.8311808Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8311919Z               "line": 140
2026-06-22T01:08:01.8312024Z             },
2026-06-22T01:08:01.8312128Z             {
2026-06-22T01:08:01.8312267Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8312376Z               "line": 149
2026-06-22T01:08:01.8312486Z             },
2026-06-22T01:08:01.8312582Z             {
2026-06-22T01:08:01.8312719Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8312829Z               "line": 158
2026-06-22T01:08:01.8312945Z             },
2026-06-22T01:08:01.8313053Z             {
2026-06-22T01:08:01.8313188Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8313316Z               "line": 169
2026-06-22T01:08:01.8313410Z             },
2026-06-22T01:08:01.8313520Z             {
2026-06-22T01:08:01.8313656Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8313770Z               "line": 177
2026-06-22T01:08:01.8313870Z             },
2026-06-22T01:08:01.8313962Z             {
2026-06-22T01:08:01.8314108Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8314214Z               "line": 186
2026-06-22T01:08:01.8314328Z             },
2026-06-22T01:08:01.8314427Z             {
2026-06-22T01:08:01.8314566Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8314680Z               "line": 195
2026-06-22T01:08:01.8314772Z             },
2026-06-22T01:08:01.8314881Z             {
2026-06-22T01:08:01.8315024Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8315140Z               "line": 204
2026-06-22T01:08:01.8315243Z             },
2026-06-22T01:08:01.8315353Z             {
2026-06-22T01:08:01.8315507Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8315616Z               "line": 216
2026-06-22T01:08:01.8315826Z             },
2026-06-22T01:08:01.8315930Z             {
2026-06-22T01:08:01.8316074Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8316183Z               "line": 223
2026-06-22T01:08:01.8316296Z             },
2026-06-22T01:08:01.8316401Z             {
2026-06-22T01:08:01.8316540Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8316658Z               "line": 232
2026-06-22T01:08:01.8316760Z             },
2026-06-22T01:08:01.8316868Z             {
2026-06-22T01:08:01.8317002Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8317112Z               "line": 239
2026-06-22T01:08:01.8317312Z             },
2026-06-22T01:08:01.8317417Z             {
2026-06-22T01:08:01.8317554Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8317665Z               "line": 306
2026-06-22T01:08:01.8317774Z             },
2026-06-22T01:08:01.8317879Z             {
2026-06-22T01:08:01.8318028Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8318141Z               "line": 318
2026-06-22T01:08:01.8318242Z             },
2026-06-22T01:08:01.8318353Z             {
2026-06-22T01:08:01.8318480Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8318598Z               "line": 405
2026-06-22T01:08:01.8318703Z             }
2026-06-22T01:08:01.8318815Z           ]
2026-06-22T01:08:01.8318925Z         },
2026-06-22T01:08:01.8319116Z         "int": {
2026-06-22T01:08:01.8319240Z           "complete": false,
2026-06-22T01:08:01.8319355Z           "evidence": []
2026-06-22T01:08:01.8319463Z         },
2026-06-22T01:08:01.8319569Z         "unit": {
2026-06-22T01:08:01.8319688Z           "complete": true,
2026-06-22T01:08:01.8319807Z           "evidence": [
2026-06-22T01:08:01.8319903Z             {
2026-06-22T01:08:01.8320050Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8320155Z               "line": 487
2026-06-22T01:08:01.8320271Z             },
2026-06-22T01:08:01.8320375Z             {
2026-06-22T01:08:01.8320513Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8320623Z               "line": 528
2026-06-22T01:08:01.8320727Z             },
2026-06-22T01:08:01.8320838Z             {
2026-06-22T01:08:01.8320966Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8321080Z               "line": 541
2026-06-22T01:08:01.8321191Z             },
2026-06-22T01:08:01.8321290Z             {
2026-06-22T01:08:01.8321427Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8321537Z               "line": 627
2026-06-22T01:08:01.8321645Z             }
2026-06-22T01:08:01.8321748Z           ]
2026-06-22T01:08:01.8321845Z         }
2026-06-22T01:08:01.8321955Z       }
2026-06-22T01:08:01.8322044Z     },
2026-06-22T01:08:01.8322150Z     {
2026-06-22T01:08:01.8322279Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-22T01:08:01.8322513Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-22T01:08:01.8322622Z       "requiredStages": [
2026-06-22T01:08:01.8322736Z         "impl",
2026-06-22T01:08:01.8322846Z         "unit"
2026-06-22T01:08:01.8322936Z       ],
2026-06-22T01:08:01.8323051Z       "stages": {
2026-06-22T01:08:01.8323157Z         "doc": {
2026-06-22T01:08:01.8323270Z           "complete": false,
2026-06-22T01:08:01.8323385Z           "evidence": []
2026-06-22T01:08:01.8323490Z         },
2026-06-22T01:08:01.8323598Z         "impl": {
2026-06-22T01:08:01.8323714Z           "complete": true,
2026-06-22T01:08:01.8323819Z           "evidence": [
2026-06-22T01:08:01.8323927Z             {
2026-06-22T01:08:01.8324075Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8324179Z               "line": 175
2026-06-22T01:08:01.8324277Z             },
2026-06-22T01:08:01.8324392Z             {
2026-06-22T01:08:01.8324578Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.8324692Z               "line": 171
2026-06-22T01:08:01.8324902Z             }
2026-06-22T01:08:01.8325012Z           ]
2026-06-22T01:08:01.8325113Z         },
2026-06-22T01:08:01.8325222Z         "int": {
2026-06-22T01:08:01.8325356Z           "complete": false,
2026-06-22T01:08:01.8325465Z           "evidence": []
2026-06-22T01:08:01.8325574Z         },
2026-06-22T01:08:01.8325680Z         "unit": {
2026-06-22T01:08:01.8325803Z           "complete": true,
2026-06-22T01:08:01.8325913Z           "evidence": [
2026-06-22T01:08:01.8326024Z             {
2026-06-22T01:08:01.8326171Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8326286Z               "line": 297
2026-06-22T01:08:01.8326490Z             },
2026-06-22T01:08:01.8326596Z             {
2026-06-22T01:08:01.8326757Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.8326866Z               "line": 836
2026-06-22T01:08:01.8326976Z             },
2026-06-22T01:08:01.8327086Z             {
2026-06-22T01:08:01.8327228Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.8327357Z               "line": 849
2026-06-22T01:08:01.8327461Z             }
2026-06-22T01:08:01.8327572Z           ]
2026-06-22T01:08:01.8327681Z         }
2026-06-22T01:08:01.8327786Z       }
2026-06-22T01:08:01.8327896Z     },
2026-06-22T01:08:01.8328001Z     {
2026-06-22T01:08:01.8328143Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-22T01:08:01.8328307Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-22T01:08:01.8328434Z       "requiredStages": [
2026-06-22T01:08:01.8328536Z         "impl",
2026-06-22T01:08:01.8328649Z         "unit"
2026-06-22T01:08:01.8328758Z       ],
2026-06-22T01:08:01.8328869Z       "stages": {
2026-06-22T01:08:01.8329058Z         "doc": {
2026-06-22T01:08:01.8329177Z           "complete": false,
2026-06-22T01:08:01.8329296Z           "evidence": []
2026-06-22T01:08:01.8329395Z         },
2026-06-22T01:08:01.8329509Z         "impl": {
2026-06-22T01:08:01.8329634Z           "complete": true,
2026-06-22T01:08:01.8329747Z           "evidence": [
2026-06-22T01:08:01.8329843Z             {
2026-06-22T01:08:01.8329986Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8330095Z               "line": 116
2026-06-22T01:08:01.8330196Z             },
2026-06-22T01:08:01.8330305Z             {
2026-06-22T01:08:01.8330473Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.8330572Z               "line": 507
2026-06-22T01:08:01.8330681Z             }
2026-06-22T01:08:01.8330782Z           ]
2026-06-22T01:08:01.8330891Z         },
2026-06-22T01:08:01.8330996Z         "int": {
2026-06-22T01:08:01.8331122Z           "complete": false,
2026-06-22T01:08:01.8331244Z           "evidence": []
2026-06-22T01:08:01.8331345Z         },
2026-06-22T01:08:01.8331456Z         "unit": {
2026-06-22T01:08:01.8331563Z           "complete": true,
2026-06-22T01:08:01.8331679Z           "evidence": [
2026-06-22T01:08:01.8331780Z             {
2026-06-22T01:08:01.8331930Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.8332049Z               "line": 541
2026-06-22T01:08:01.8332153Z             }
2026-06-22T01:08:01.8332252Z           ]
2026-06-22T01:08:01.8332357Z         }
2026-06-22T01:08:01.8332453Z       }
2026-06-22T01:08:01.8332548Z     },
2026-06-22T01:08:01.8332647Z     {
2026-06-22T01:08:01.8332796Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-22T01:08:01.8332991Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-22T01:08:01.8333149Z       "requiredStages": [
2026-06-22T01:08:01.8333248Z         "impl",
2026-06-22T01:08:01.8333359Z         "unit"
2026-06-22T01:08:01.8333463Z       ],
2026-06-22T01:08:01.8333568Z       "stages": {
2026-06-22T01:08:01.8333669Z         "doc": {
2026-06-22T01:08:01.8333787Z           "complete": false,
2026-06-22T01:08:01.8333907Z           "evidence": []
2026-06-22T01:08:01.8334013Z         },
2026-06-22T01:08:01.8334116Z         "impl": {
2026-06-22T01:08:01.8334351Z           "complete": true,
2026-06-22T01:08:01.8334464Z           "evidence": [
2026-06-22T01:08:01.8334573Z             {
2026-06-22T01:08:01.8334720Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8334833Z               "line": 552
2026-06-22T01:08:01.8334923Z             },
2026-06-22T01:08:01.8335034Z             {
2026-06-22T01:08:01.8335176Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.8335296Z               "line": 28
2026-06-22T01:08:01.8335406Z             }
2026-06-22T01:08:01.8335505Z           ]
2026-06-22T01:08:01.8335611Z         },
2026-06-22T01:08:01.8335711Z         "int": {
2026-06-22T01:08:01.8335931Z           "complete": false,
2026-06-22T01:08:01.8336035Z           "evidence": []
2026-06-22T01:08:01.8336144Z         },
2026-06-22T01:08:01.8336264Z         "unit": {
2026-06-22T01:08:01.8336378Z           "complete": true,
2026-06-22T01:08:01.8336497Z           "evidence": [
2026-06-22T01:08:01.8336598Z             {
2026-06-22T01:08:01.8336750Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.8336866Z               "line": 229
2026-06-22T01:08:01.8336974Z             }
2026-06-22T01:08:01.8337084Z           ]
2026-06-22T01:08:01.8337190Z         }
2026-06-22T01:08:01.8337299Z       }
2026-06-22T01:08:01.8337392Z     },
2026-06-22T01:08:01.8337497Z     {
2026-06-22T01:08:01.8337632Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-22T01:08:01.8337802Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-22T01:08:01.8337922Z       "requiredStages": [],
2026-06-22T01:08:01.8338022Z       "stages": {
2026-06-22T01:08:01.8338132Z         "doc": {
2026-06-22T01:08:01.8338251Z           "complete": false,
2026-06-22T01:08:01.8338369Z           "evidence": []
2026-06-22T01:08:01.8342746Z         },
2026-06-22T01:08:01.8342907Z         "impl": {
2026-06-22T01:08:01.8343042Z           "complete": false,
2026-06-22T01:08:01.8343155Z           "evidence": []
2026-06-22T01:08:01.8343399Z         },
2026-06-22T01:08:01.8343513Z         "int": {
2026-06-22T01:08:01.8343638Z           "complete": false,
2026-06-22T01:08:01.8343738Z           "evidence": []
2026-06-22T01:08:01.8343846Z         },
2026-06-22T01:08:01.8343948Z         "unit": {
2026-06-22T01:08:01.8344057Z           "complete": false,
2026-06-22T01:08:01.8344176Z           "evidence": []
2026-06-22T01:08:01.8344277Z         }
2026-06-22T01:08:01.8344390Z       }
2026-06-22T01:08:01.8344481Z     },
2026-06-22T01:08:01.8344583Z     {
2026-06-22T01:08:01.8344729Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-22T01:08:01.8344926Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-22T01:08:01.8345057Z       "requiredStages": [
2026-06-22T01:08:01.8345162Z         "impl",
2026-06-22T01:08:01.8345271Z         "unit"
2026-06-22T01:08:01.8345365Z       ],
2026-06-22T01:08:01.8345474Z       "stages": {
2026-06-22T01:08:01.8345575Z         "doc": {
2026-06-22T01:08:01.8345699Z           "complete": false,
2026-06-22T01:08:01.8345808Z           "evidence": []
2026-06-22T01:08:01.8345909Z         },
2026-06-22T01:08:01.8346018Z         "impl": {
2026-06-22T01:08:01.8346132Z           "complete": true,
2026-06-22T01:08:01.8346247Z           "evidence": [
2026-06-22T01:08:01.8346351Z             {
2026-06-22T01:08:01.8346695Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T01:08:01.8346815Z               "line": 19
2026-06-22T01:08:01.8346919Z             },
2026-06-22T01:08:01.8347028Z             {
2026-06-22T01:08:01.8347182Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8347296Z               "line": 463
2026-06-22T01:08:01.8347392Z             },
2026-06-22T01:08:01.8347497Z             {
2026-06-22T01:08:01.8347654Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8347770Z               "line": 499
2026-06-22T01:08:01.8347877Z             },
2026-06-22T01:08:01.8347981Z             {
2026-06-22T01:08:01.8348130Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8348406Z               "line": 547
2026-06-22T01:08:01.8348511Z             },
2026-06-22T01:08:01.8348620Z             {
2026-06-22T01:08:01.8348764Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.8348878Z               "line": 15
2026-06-22T01:08:01.8349060Z             },
2026-06-22T01:08:01.8349168Z             {
2026-06-22T01:08:01.8349321Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.8349427Z               "line": 48
2026-06-22T01:08:01.8349541Z             },
2026-06-22T01:08:01.8349636Z             {
2026-06-22T01:08:01.8349784Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.8349985Z               "line": 119
2026-06-22T01:08:01.8350095Z             },
2026-06-22T01:08:01.8350198Z             {
2026-06-22T01:08:01.8350326Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8350449Z               "line": 3948
2026-06-22T01:08:01.8350553Z             }
2026-06-22T01:08:01.8350663Z           ]
2026-06-22T01:08:01.8350764Z         },
2026-06-22T01:08:01.8350867Z         "int": {
2026-06-22T01:08:01.8350992Z           "complete": false,
2026-06-22T01:08:01.8351097Z           "evidence": []
2026-06-22T01:08:01.8351201Z         },
2026-06-22T01:08:01.8351312Z         "unit": {
2026-06-22T01:08:01.8351431Z           "complete": true,
2026-06-22T01:08:01.8351530Z           "evidence": [
2026-06-22T01:08:01.8351636Z             {
2026-06-22T01:08:01.8351788Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8351888Z               "line": 765
2026-06-22T01:08:01.8352003Z             },
2026-06-22T01:08:01.8352103Z             {
2026-06-22T01:08:01.8352251Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.8352360Z               "line": 165
2026-06-22T01:08:01.8352465Z             },
2026-06-22T01:08:01.8352571Z             {
2026-06-22T01:08:01.8352707Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T01:08:01.8352823Z               "line": 175
2026-06-22T01:08:01.8352929Z             }
2026-06-22T01:08:01.8353036Z           ]
2026-06-22T01:08:01.8353136Z         }
2026-06-22T01:08:01.8353246Z       }
2026-06-22T01:08:01.8353353Z     },
2026-06-22T01:08:01.8353453Z     {
2026-06-22T01:08:01.8353602Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-22T01:08:01.8354669Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-22T01:08:01.8354804Z       "requiredStages": [
2026-06-22T01:08:01.8354912Z         "impl",
2026-06-22T01:08:01.8355022Z         "unit"
2026-06-22T01:08:01.8355128Z       ],
2026-06-22T01:08:01.8355236Z       "stages": {
2026-06-22T01:08:01.8355342Z         "doc": {
2026-06-22T01:08:01.8355462Z           "complete": false,
2026-06-22T01:08:01.8355594Z           "evidence": []
2026-06-22T01:08:01.8355702Z         },
2026-06-22T01:08:01.8355803Z         "impl": {
2026-06-22T01:08:01.8355930Z           "complete": true,
2026-06-22T01:08:01.8356034Z           "evidence": [
2026-06-22T01:08:01.8356140Z             {
2026-06-22T01:08:01.8356282Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8356397Z               "line": 192
2026-06-22T01:08:01.8356507Z             },
2026-06-22T01:08:01.8356606Z             {
2026-06-22T01:08:01.8356746Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8356860Z               "line": 279
2026-06-22T01:08:01.8356973Z             }
2026-06-22T01:08:01.8357075Z           ]
2026-06-22T01:08:01.8357184Z         },
2026-06-22T01:08:01.8357293Z         "int": {
2026-06-22T01:08:01.8357408Z           "complete": false,
2026-06-22T01:08:01.8357522Z           "evidence": []
2026-06-22T01:08:01.8357622Z         },
2026-06-22T01:08:01.8357728Z         "unit": {
2026-06-22T01:08:01.8357952Z           "complete": true,
2026-06-22T01:08:01.8358062Z           "evidence": [
2026-06-22T01:08:01.8358170Z             {
2026-06-22T01:08:01.8358305Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8358409Z               "line": 470
2026-06-22T01:08:01.8358513Z             },
2026-06-22T01:08:01.8358613Z             {
2026-06-22T01:08:01.8358743Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.8358860Z               "line": 526
2026-06-22T01:08:01.8359034Z             }
2026-06-22T01:08:01.8359133Z           ]
2026-06-22T01:08:01.8359233Z         }
2026-06-22T01:08:01.8359324Z       }
2026-06-22T01:08:01.8359528Z     },
2026-06-22T01:08:01.8359629Z     {
2026-06-22T01:08:01.8359781Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-22T01:08:01.8363710Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-22T01:08:01.8363872Z       "requiredStages": [
2026-06-22T01:08:01.8363980Z         "impl",
2026-06-22T01:08:01.8364085Z         "unit",
2026-06-22T01:08:01.8364191Z         "int"
2026-06-22T01:08:01.8364299Z       ],
2026-06-22T01:08:01.8364415Z       "stages": {
2026-06-22T01:08:01.8364520Z         "doc": {
2026-06-22T01:08:01.8364647Z           "complete": false,
2026-06-22T01:08:01.8364754Z           "evidence": []
2026-06-22T01:08:01.8364863Z         },
2026-06-22T01:08:01.8364962Z         "impl": {
2026-06-22T01:08:01.8365083Z           "complete": true,
2026-06-22T01:08:01.8365211Z           "evidence": [
2026-06-22T01:08:01.8365320Z             {
2026-06-22T01:08:01.8365491Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8365602Z               "line": 116
2026-06-22T01:08:01.8365703Z             },
2026-06-22T01:08:01.8365806Z             {
2026-06-22T01:08:01.8365965Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.8366075Z               "line": 132
2026-06-22T01:08:01.8366173Z             },
2026-06-22T01:08:01.8366277Z             {
2026-06-22T01:08:01.8366424Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.8366547Z               "line": 434
2026-06-22T01:08:01.8366647Z             },
2026-06-22T01:08:01.8366758Z             {
2026-06-22T01:08:01.8366909Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8367024Z               "line": 139
2026-06-22T01:08:01.8367138Z             },
2026-06-22T01:08:01.8367243Z             {
2026-06-22T01:08:01.8367401Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8367515Z               "line": 326
2026-06-22T01:08:01.8367626Z             },
2026-06-22T01:08:01.8367729Z             {
2026-06-22T01:08:01.8367877Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8368120Z               "line": 555
2026-06-22T01:08:01.8368217Z             }
2026-06-22T01:08:01.8368321Z           ]
2026-06-22T01:08:01.8368426Z         },
2026-06-22T01:08:01.8368541Z         "int": {
2026-06-22T01:08:01.8368668Z           "complete": true,
2026-06-22T01:08:01.8368764Z           "evidence": [
2026-06-22T01:08:01.8368870Z             {
2026-06-22T01:08:01.8369120Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T01:08:01.8369231Z               "line": 32
2026-06-22T01:08:01.8369331Z             }
2026-06-22T01:08:01.8369444Z           ]
2026-06-22T01:08:01.8369551Z         },
2026-06-22T01:08:01.8369641Z         "unit": {
2026-06-22T01:08:01.8369861Z           "complete": true,
2026-06-22T01:08:01.8369970Z           "evidence": [
2026-06-22T01:08:01.8370079Z             {
2026-06-22T01:08:01.8370227Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8370346Z               "line": 625
2026-06-22T01:08:01.8370447Z             },
2026-06-22T01:08:01.8370557Z             {
2026-06-22T01:08:01.8370704Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8370810Z               "line": 646
2026-06-22T01:08:01.8370914Z             },
2026-06-22T01:08:01.8371014Z             {
2026-06-22T01:08:01.8371144Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8371266Z               "line": 662
2026-06-22T01:08:01.8371356Z             },
2026-06-22T01:08:01.8371471Z             {
2026-06-22T01:08:01.8371616Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8371735Z               "line": 680
2026-06-22T01:08:01.8371846Z             },
2026-06-22T01:08:01.8371955Z             {
2026-06-22T01:08:01.8372107Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8372217Z               "line": 704
2026-06-22T01:08:01.8372331Z             }
2026-06-22T01:08:01.8372432Z           ]
2026-06-22T01:08:01.8372532Z         }
2026-06-22T01:08:01.8372636Z       }
2026-06-22T01:08:01.8372728Z     },
2026-06-22T01:08:01.8372837Z     {
2026-06-22T01:08:01.8372970Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-22T01:08:01.8373152Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-22T01:08:01.8373265Z       "requiredStages": [
2026-06-22T01:08:01.8373367Z         "impl",
2026-06-22T01:08:01.8373476Z         "unit"
2026-06-22T01:08:01.8373576Z       ],
2026-06-22T01:08:01.8373687Z       "stages": {
2026-06-22T01:08:01.8373790Z         "doc": {
2026-06-22T01:08:01.8373914Z           "complete": false,
2026-06-22T01:08:01.8374030Z           "evidence": []
2026-06-22T01:08:01.8374133Z         },
2026-06-22T01:08:01.8374252Z         "impl": {
2026-06-22T01:08:01.8374361Z           "complete": true,
2026-06-22T01:08:01.8374479Z           "evidence": [
2026-06-22T01:08:01.8374588Z             {
2026-06-22T01:08:01.8374741Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.8374850Z               "line": 35
2026-06-22T01:08:01.8374961Z             }
2026-06-22T01:08:01.8375070Z           ]
2026-06-22T01:08:01.8375169Z         },
2026-06-22T01:08:01.8375280Z         "int": {
2026-06-22T01:08:01.8375394Z           "complete": false,
2026-06-22T01:08:01.8375512Z           "evidence": []
2026-06-22T01:08:01.8375604Z         },
2026-06-22T01:08:01.8375709Z         "unit": {
2026-06-22T01:08:01.8375823Z           "complete": true,
2026-06-22T01:08:01.8375934Z           "evidence": [
2026-06-22T01:08:01.8376042Z             {
2026-06-22T01:08:01.8376181Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T01:08:01.8376301Z               "line": 220
2026-06-22T01:08:01.8376399Z             }
2026-06-22T01:08:01.8376510Z           ]
2026-06-22T01:08:01.8376620Z         }
2026-06-22T01:08:01.8376723Z       }
2026-06-22T01:08:01.8376827Z     },
2026-06-22T01:08:01.8376928Z     {
2026-06-22T01:08:01.8377069Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-22T01:08:01.8380305Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-22T01:08:01.8380706Z       "requiredStages": [
2026-06-22T01:08:01.8380816Z         "impl",
2026-06-22T01:08:01.8380920Z         "unit",
2026-06-22T01:08:01.8381026Z         "int"
2026-06-22T01:08:01.8381135Z       ],
2026-06-22T01:08:01.8381235Z       "stages": {
2026-06-22T01:08:01.8381341Z         "doc": {
2026-06-22T01:08:01.8381460Z           "complete": false,
2026-06-22T01:08:01.8381574Z           "evidence": []
2026-06-22T01:08:01.8381680Z         },
2026-06-22T01:08:01.8381788Z         "impl": {
2026-06-22T01:08:01.8381911Z           "complete": true,
2026-06-22T01:08:01.8382017Z           "evidence": [
2026-06-22T01:08:01.8382148Z             {
2026-06-22T01:08:01.8382305Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8382420Z               "line": 202
2026-06-22T01:08:01.8382529Z             },
2026-06-22T01:08:01.8382619Z             {
2026-06-22T01:08:01.8382768Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:08:01.8382891Z               "line": 107
2026-06-22T01:08:01.8382992Z             },
2026-06-22T01:08:01.8383097Z             {
2026-06-22T01:08:01.8383245Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:08:01.8383364Z               "line": 138
2026-06-22T01:08:01.8383464Z             },
2026-06-22T01:08:01.8383569Z             {
2026-06-22T01:08:01.8383716Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8383826Z               "line": 209
2026-06-22T01:08:01.8383928Z             },
2026-06-22T01:08:01.8384026Z             {
2026-06-22T01:08:01.8384179Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8384289Z               "line": 246
2026-06-22T01:08:01.8384398Z             },
2026-06-22T01:08:01.8384504Z             {
2026-06-22T01:08:01.8384651Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8384759Z               "line": 379
2026-06-22T01:08:01.8384859Z             }
2026-06-22T01:08:01.8384968Z           ]
2026-06-22T01:08:01.8385067Z         },
2026-06-22T01:08:01.8385177Z         "int": {
2026-06-22T01:08:01.8385287Z           "complete": true,
2026-06-22T01:08:01.8385391Z           "evidence": [
2026-06-22T01:08:01.8385496Z             {
2026-06-22T01:08:01.8385659Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-22T01:08:01.8385772Z               "line": 17
2026-06-22T01:08:01.8385878Z             }
2026-06-22T01:08:01.8385983Z           ]
2026-06-22T01:08:01.8386087Z         },
2026-06-22T01:08:01.8386203Z         "unit": {
2026-06-22T01:08:01.8386322Z           "complete": true,
2026-06-22T01:08:01.8386441Z           "evidence": [
2026-06-22T01:08:01.8386551Z             {
2026-06-22T01:08:01.8386688Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8386809Z               "line": 982
2026-06-22T01:08:01.8386913Z             }
2026-06-22T01:08:01.8387022Z           ]
2026-06-22T01:08:01.8387128Z         }
2026-06-22T01:08:01.8387302Z       }
2026-06-22T01:08:01.8387412Z     },
2026-06-22T01:08:01.8387507Z     {
2026-06-22T01:08:01.8387638Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-22T01:08:01.8387930Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-22T01:08:01.8388053Z       "requiredStages": [
2026-06-22T01:08:01.8388168Z         "impl",
2026-06-22T01:08:01.8388268Z         "unit"
2026-06-22T01:08:01.8388378Z       ],
2026-06-22T01:08:01.8388488Z       "stages": {
2026-06-22T01:08:01.8388597Z         "doc": {
2026-06-22T01:08:01.8388722Z           "complete": false,
2026-06-22T01:08:01.8388831Z           "evidence": []
2026-06-22T01:08:01.8389085Z         },
2026-06-22T01:08:01.8389194Z         "impl": {
2026-06-22T01:08:01.8389322Z           "complete": true,
2026-06-22T01:08:01.8389423Z           "evidence": [
2026-06-22T01:08:01.8389522Z             {
2026-06-22T01:08:01.8389676Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.8389808Z               "line": 405
2026-06-22T01:08:01.8389918Z             },
2026-06-22T01:08:01.8390019Z             {
2026-06-22T01:08:01.8390155Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.8390269Z               "line": 409
2026-06-22T01:08:01.8390385Z             },
2026-06-22T01:08:01.8390484Z             {
2026-06-22T01:08:01.8390646Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.8390771Z               "line": 156
2026-06-22T01:08:01.8390870Z             }
2026-06-22T01:08:01.8390981Z           ]
2026-06-22T01:08:01.8391081Z         },
2026-06-22T01:08:01.8391185Z         "int": {
2026-06-22T01:08:01.8391296Z           "complete": false,
2026-06-22T01:08:01.8391404Z           "evidence": []
2026-06-22T01:08:01.8391514Z         },
2026-06-22T01:08:01.8391620Z         "unit": {
2026-06-22T01:08:01.8391738Z           "complete": true,
2026-06-22T01:08:01.8391848Z           "evidence": [
2026-06-22T01:08:01.8391959Z             {
2026-06-22T01:08:01.8392101Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.8392226Z               "line": 865
2026-06-22T01:08:01.8392330Z             },
2026-06-22T01:08:01.8392429Z             {
2026-06-22T01:08:01.8392567Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.8392680Z               "line": 879
2026-06-22T01:08:01.8392789Z             },
2026-06-22T01:08:01.8392889Z             {
2026-06-22T01:08:01.8393037Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.8393141Z               "line": 898
2026-06-22T01:08:01.8393247Z             },
2026-06-22T01:08:01.8393356Z             {
2026-06-22T01:08:01.8393504Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.8393619Z               "line": 915
2026-06-22T01:08:01.8393723Z             },
2026-06-22T01:08:01.8393824Z             {
2026-06-22T01:08:01.8393990Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:08:01.8394105Z               "line": 441
2026-06-22T01:08:01.8394215Z             }
2026-06-22T01:08:01.8394315Z           ]
2026-06-22T01:08:01.8394419Z         }
2026-06-22T01:08:01.8394521Z       }
2026-06-22T01:08:01.8394629Z     },
2026-06-22T01:08:01.8394739Z     {
2026-06-22T01:08:01.8394887Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-22T01:08:01.8404742Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-22T01:08:01.8405194Z       "requiredStages": [
2026-06-22T01:08:01.8405299Z         "doc",
2026-06-22T01:08:01.8405396Z         "impl",
2026-06-22T01:08:01.8405499Z         "unit",
2026-06-22T01:08:01.8405624Z         "int"
2026-06-22T01:08:01.8405725Z       ],
2026-06-22T01:08:01.8405833Z       "stages": {
2026-06-22T01:08:01.8405946Z         "doc": {
2026-06-22T01:08:01.8406066Z           "complete": true,
2026-06-22T01:08:01.8406178Z           "evidence": [
2026-06-22T01:08:01.8406283Z             {
2026-06-22T01:08:01.8406422Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8406535Z               "line": 420
2026-06-22T01:08:01.8406646Z             },
2026-06-22T01:08:01.8406751Z             {
2026-06-22T01:08:01.8406892Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8407008Z               "line": 402
2026-06-22T01:08:01.8407117Z             }
2026-06-22T01:08:01.8407227Z           ]
2026-06-22T01:08:01.8407332Z         },
2026-06-22T01:08:01.8407446Z         "impl": {
2026-06-22T01:08:01.8407561Z           "complete": true,
2026-06-22T01:08:01.8407676Z           "evidence": [
2026-06-22T01:08:01.8407785Z             {
2026-06-22T01:08:01.8407934Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8408061Z               "line": 797
2026-06-22T01:08:01.8408161Z             },
2026-06-22T01:08:01.8408273Z             {
2026-06-22T01:08:01.8408428Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8408532Z               "line": 822
2026-06-22T01:08:01.8408711Z             },
2026-06-22T01:08:01.8408806Z             {
2026-06-22T01:08:01.8409022Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8409135Z               "line": 839
2026-06-22T01:08:01.8409227Z             },
2026-06-22T01:08:01.8409337Z             {
2026-06-22T01:08:01.8409489Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8409613Z               "line": 854
2026-06-22T01:08:01.8409717Z             },
2026-06-22T01:08:01.8409813Z             {
2026-06-22T01:08:01.8409951Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8410065Z               "line": 874
2026-06-22T01:08:01.8410285Z             },
2026-06-22T01:08:01.8410389Z             {
2026-06-22T01:08:01.8410534Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8410637Z               "line": 964
2026-06-22T01:08:01.8410748Z             },
2026-06-22T01:08:01.8410863Z             {
2026-06-22T01:08:01.8411000Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8411116Z               "line": 1016
2026-06-22T01:08:01.8411220Z             },
2026-06-22T01:08:01.8411328Z             {
2026-06-22T01:08:01.8411476Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8411600Z               "line": 1075
2026-06-22T01:08:01.8411709Z             },
2026-06-22T01:08:01.8411811Z             {
2026-06-22T01:08:01.8411967Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.8412073Z               "line": 527
2026-06-22T01:08:01.8412173Z             }
2026-06-22T01:08:01.8412277Z           ]
2026-06-22T01:08:01.8412387Z         },
2026-06-22T01:08:01.8412497Z         "int": {
2026-06-22T01:08:01.8412606Z           "complete": true,
2026-06-22T01:08:01.8412712Z           "evidence": [
2026-06-22T01:08:01.8412816Z             {
2026-06-22T01:08:01.8412973Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:08:01.8413084Z               "line": 35
2026-06-22T01:08:01.8413196Z             },
2026-06-22T01:08:01.8413298Z             {
2026-06-22T01:08:01.8413446Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:08:01.8413549Z               "line": 569
2026-06-22T01:08:01.8413654Z             },
2026-06-22T01:08:01.8413763Z             {
2026-06-22T01:08:01.8413900Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:08:01.8414024Z               "line": 590
2026-06-22T01:08:01.8414134Z             }
2026-06-22T01:08:01.8414228Z           ]
2026-06-22T01:08:01.8414333Z         },
2026-06-22T01:08:01.8414439Z         "unit": {
2026-06-22T01:08:01.8414552Z           "complete": true,
2026-06-22T01:08:01.8414659Z           "evidence": [
2026-06-22T01:08:01.8414768Z             {
2026-06-22T01:08:01.8414910Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8415026Z               "line": 1202
2026-06-22T01:08:01.8415130Z             },
2026-06-22T01:08:01.8415230Z             {
2026-06-22T01:08:01.8415382Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8415497Z               "line": 1246
2026-06-22T01:08:01.8415608Z             },
2026-06-22T01:08:01.8415716Z             {
2026-06-22T01:08:01.8415855Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8415965Z               "line": 1260
2026-06-22T01:08:01.8416068Z             },
2026-06-22T01:08:01.8416179Z             {
2026-06-22T01:08:01.8416318Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8416440Z               "line": 1278
2026-06-22T01:08:01.8416550Z             },
2026-06-22T01:08:01.8416649Z             {
2026-06-22T01:08:01.8416800Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8416910Z               "line": 1302
2026-06-22T01:08:01.8417020Z             },
2026-06-22T01:08:01.8417119Z             {
2026-06-22T01:08:01.8417273Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8417497Z               "line": 1529
2026-06-22T01:08:01.8417597Z             }
2026-06-22T01:08:01.8417705Z           ]
2026-06-22T01:08:01.8417802Z         }
2026-06-22T01:08:01.8417911Z       }
2026-06-22T01:08:01.8418011Z     },
2026-06-22T01:08:01.8418116Z     {
2026-06-22T01:08:01.8418254Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-22T01:08:01.8420526Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-22T01:08:01.8420760Z       "requiredStages": [
2026-06-22T01:08:01.8420869Z         "unit",
2026-06-22T01:08:01.8420969Z         "int"
2026-06-22T01:08:01.8421070Z       ],
2026-06-22T01:08:01.8421174Z       "stages": {
2026-06-22T01:08:01.8421279Z         "doc": {
2026-06-22T01:08:01.8421395Z           "complete": true,
2026-06-22T01:08:01.8421503Z           "evidence": [
2026-06-22T01:08:01.8421613Z             {
2026-06-22T01:08:01.8421756Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8421855Z               "line": 381
2026-06-22T01:08:01.8421960Z             }
2026-06-22T01:08:01.8422085Z           ]
2026-06-22T01:08:01.8422193Z         },
2026-06-22T01:08:01.8422293Z         "impl": {
2026-06-22T01:08:01.8422413Z           "complete": true,
2026-06-22T01:08:01.8422518Z           "evidence": [
2026-06-22T01:08:01.8422628Z             {
2026-06-22T01:08:01.8422776Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8422889Z               "line": 143
2026-06-22T01:08:01.8423000Z             }
2026-06-22T01:08:01.8423099Z           ]
2026-06-22T01:08:01.8423209Z         },
2026-06-22T01:08:01.8423310Z         "int": {
2026-06-22T01:08:01.8423433Z           "complete": true,
2026-06-22T01:08:01.8423533Z           "evidence": [
2026-06-22T01:08:01.8423644Z             {
2026-06-22T01:08:01.8423791Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8423901Z               "line": 1045
2026-06-22T01:08:01.8424011Z             }
2026-06-22T01:08:01.8424109Z           ]
2026-06-22T01:08:01.8424219Z         },
2026-06-22T01:08:01.8424328Z         "unit": {
2026-06-22T01:08:01.8424450Z           "complete": true,
2026-06-22T01:08:01.8424555Z           "evidence": [
2026-06-22T01:08:01.8424661Z             {
2026-06-22T01:08:01.8424807Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8424913Z               "line": 2522
2026-06-22T01:08:01.8425023Z             }
2026-06-22T01:08:01.8425127Z           ]
2026-06-22T01:08:01.8425233Z         }
2026-06-22T01:08:01.8425347Z       }
2026-06-22T01:08:01.8425446Z     },
2026-06-22T01:08:01.8425543Z     {
2026-06-22T01:08:01.8425695Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-22T01:08:01.8430008Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-22T01:08:01.8430385Z       "requiredStages": [
2026-06-22T01:08:01.8430485Z         "doc",
2026-06-22T01:08:01.8430584Z         "impl",
2026-06-22T01:08:01.8430691Z         "unit"
2026-06-22T01:08:01.8430790Z       ],
2026-06-22T01:08:01.8430894Z       "stages": {
2026-06-22T01:08:01.8431020Z         "doc": {
2026-06-22T01:08:01.8431129Z           "complete": true,
2026-06-22T01:08:01.8431238Z           "evidence": [
2026-06-22T01:08:01.8431339Z             {
2026-06-22T01:08:01.8431467Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8431573Z               "line": 342
2026-06-22T01:08:01.8431686Z             }
2026-06-22T01:08:01.8431791Z           ]
2026-06-22T01:08:01.8431897Z         },
2026-06-22T01:08:01.8432011Z         "impl": {
2026-06-22T01:08:01.8432120Z           "complete": true,
2026-06-22T01:08:01.8432231Z           "evidence": [
2026-06-22T01:08:01.8432321Z             {
2026-06-22T01:08:01.8432481Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8432587Z               "line": 333
2026-06-22T01:08:01.8432697Z             },
2026-06-22T01:08:01.8432796Z             {
2026-06-22T01:08:01.8432945Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8433054Z               "line": 892
2026-06-22T01:08:01.8433159Z             }
2026-06-22T01:08:01.8433264Z           ]
2026-06-22T01:08:01.8433364Z         },
2026-06-22T01:08:01.8433469Z         "int": {
2026-06-22T01:08:01.8433598Z           "complete": false,
2026-06-22T01:08:01.8433712Z           "evidence": []
2026-06-22T01:08:01.8433817Z         },
2026-06-22T01:08:01.8433913Z         "unit": {
2026-06-22T01:08:01.8434036Z           "complete": true,
2026-06-22T01:08:01.8434147Z           "evidence": [
2026-06-22T01:08:01.8434251Z             {
2026-06-22T01:08:01.8434398Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.8434514Z               "line": 1682
2026-06-22T01:08:01.8434622Z             }
2026-06-22T01:08:01.8434731Z           ]
2026-06-22T01:08:01.8434836Z         }
2026-06-22T01:08:01.8434939Z       }
2026-06-22T01:08:01.8435043Z     },
2026-06-22T01:08:01.8435153Z     {
2026-06-22T01:08:01.8435358Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-22T01:08:01.8440763Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-22T01:08:01.8441193Z       "requiredStages": [
2026-06-22T01:08:01.8441298Z         "impl",
2026-06-22T01:08:01.8441407Z         "unit"
2026-06-22T01:08:01.8441504Z       ],
2026-06-22T01:08:01.8441603Z       "stages": {
2026-06-22T01:08:01.8441717Z         "doc": {
2026-06-22T01:08:01.8441842Z           "complete": false,
2026-06-22T01:08:01.8441955Z           "evidence": []
2026-06-22T01:08:01.8442060Z         },
2026-06-22T01:08:01.8442162Z         "impl": {
2026-06-22T01:08:01.8442270Z           "complete": true,
2026-06-22T01:08:01.8442380Z           "evidence": [
2026-06-22T01:08:01.8442481Z             {
2026-06-22T01:08:01.8442642Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8442748Z               "line": 377
2026-06-22T01:08:01.8442854Z             },
2026-06-22T01:08:01.8442956Z             {
2026-06-22T01:08:01.8443109Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8443224Z               "line": 838
2026-06-22T01:08:01.8443443Z             }
2026-06-22T01:08:01.8443548Z           ]
2026-06-22T01:08:01.8443657Z         },
2026-06-22T01:08:01.8443763Z         "int": {
2026-06-22T01:08:01.8443887Z           "complete": false,
2026-06-22T01:08:01.8444000Z           "evidence": []
2026-06-22T01:08:01.8444102Z         },
2026-06-22T01:08:01.8444205Z         "unit": {
2026-06-22T01:08:01.8444329Z           "complete": true,
2026-06-22T01:08:01.8444436Z           "evidence": [
2026-06-22T01:08:01.8444582Z             {
2026-06-22T01:08:01.8444726Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8444839Z               "line": 2737
2026-06-22T01:08:01.8444973Z             },
2026-06-22T01:08:01.8445065Z             {
2026-06-22T01:08:01.8445206Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.8445329Z               "line": 2806
2026-06-22T01:08:01.8445429Z             }
2026-06-22T01:08:01.8445537Z           ]
2026-06-22T01:08:01.8445642Z         }
2026-06-22T01:08:01.8445748Z       }
2026-06-22T01:08:01.8445847Z     },
2026-06-22T01:08:01.8445947Z     {
2026-06-22T01:08:01.8446086Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-22T01:08:01.8447139Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-22T01:08:01.8447264Z       "requiredStages": [
2026-06-22T01:08:01.8447359Z         "doc",
2026-06-22T01:08:01.8447469Z         "impl",
2026-06-22T01:08:01.8447584Z         "unit"
2026-06-22T01:08:01.8447688Z       ],
2026-06-22T01:08:01.8447798Z       "stages": {
2026-06-22T01:08:01.8447903Z         "doc": {
2026-06-22T01:08:01.8448026Z           "complete": true,
2026-06-22T01:08:01.8448139Z           "evidence": [
2026-06-22T01:08:01.8448250Z             {
2026-06-22T01:08:01.8448400Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8448504Z               "line": 366
2026-06-22T01:08:01.8448605Z             }
2026-06-22T01:08:01.8448705Z           ]
2026-06-22T01:08:01.8448809Z         },
2026-06-22T01:08:01.8448906Z         "impl": {
2026-06-22T01:08:01.8449091Z           "complete": true,
2026-06-22T01:08:01.8449340Z           "evidence": [
2026-06-22T01:08:01.8449438Z             {
2026-06-22T01:08:01.8449592Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.8449701Z               "line": 87
2026-06-22T01:08:01.8449806Z             },
2026-06-22T01:08:01.8449907Z             {
2026-06-22T01:08:01.8450063Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8450170Z               "line": 203
2026-06-22T01:08:01.8450269Z             },
2026-06-22T01:08:01.8450374Z             {
2026-06-22T01:08:01.8454747Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.8454908Z               "line": 55
2026-06-22T01:08:01.8455195Z             },
2026-06-22T01:08:01.8455306Z             {
2026-06-22T01:08:01.8455480Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.8455596Z               "line": 31
2026-06-22T01:08:01.8455709Z             },
2026-06-22T01:08:01.8455814Z             {
2026-06-22T01:08:01.8455985Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.8456093Z               "line": 446
2026-06-22T01:08:01.8456192Z             },
2026-06-22T01:08:01.8456303Z             {
2026-06-22T01:08:01.8456455Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.8456560Z               "line": 95
2026-06-22T01:08:01.8456665Z             },
2026-06-22T01:08:01.8456779Z             {
2026-06-22T01:08:01.8456932Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.8457050Z               "line": 29
2026-06-22T01:08:01.8457166Z             },
2026-06-22T01:08:01.8457266Z             {
2026-06-22T01:08:01.8457423Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.8457534Z               "line": 104
2026-06-22T01:08:01.8457642Z             },
2026-06-22T01:08:01.8457747Z             {
2026-06-22T01:08:01.8457905Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8458014Z               "line": 208
2026-06-22T01:08:01.8458115Z             },
2026-06-22T01:08:01.8458220Z             {
2026-06-22T01:08:01.8458367Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:08:01.8458478Z               "line": 28
2026-06-22T01:08:01.8458586Z             },
2026-06-22T01:08:01.8458690Z             {
2026-06-22T01:08:01.8458838Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:08:01.8459045Z               "line": 74
2026-06-22T01:08:01.8459151Z             },
2026-06-22T01:08:01.8459256Z             {
2026-06-22T01:08:01.8459422Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:08:01.8459547Z               "line": 32
2026-06-22T01:08:01.8459646Z             },
2026-06-22T01:08:01.8459752Z             {
2026-06-22T01:08:01.8459885Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8459994Z               "line": 40
2026-06-22T01:08:01.8460096Z             },
2026-06-22T01:08:01.8460209Z             {
2026-06-22T01:08:01.8460347Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8460457Z               "line": 184
2026-06-22T01:08:01.8460566Z             },
2026-06-22T01:08:01.8460667Z             {
2026-06-22T01:08:01.8460815Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.8460920Z               "line": 61
2026-06-22T01:08:01.8461030Z             },
2026-06-22T01:08:01.8461139Z             {
2026-06-22T01:08:01.8461266Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.8461386Z               "line": 131
2026-06-22T01:08:01.8461484Z             },
2026-06-22T01:08:01.8461588Z             {
2026-06-22T01:08:01.8461732Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.8461846Z               "line": 223
2026-06-22T01:08:01.8461955Z             },
2026-06-22T01:08:01.8462061Z             {
2026-06-22T01:08:01.8462212Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:08:01.8462442Z               "line": 37
2026-06-22T01:08:01.8462541Z             },
2026-06-22T01:08:01.8462643Z             {
2026-06-22T01:08:01.8462800Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:01.8462919Z               "line": 38
2026-06-22T01:08:01.8463024Z             },
2026-06-22T01:08:01.8463129Z             {
2026-06-22T01:08:01.8463278Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:08:01.8463391Z               "line": 36
2026-06-22T01:08:01.8463491Z             },
2026-06-22T01:08:01.8463607Z             {
2026-06-22T01:08:01.8463753Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:08:01.8463959Z               "line": 40
2026-06-22T01:08:01.8464063Z             }
2026-06-22T01:08:01.8464162Z           ]
2026-06-22T01:08:01.8464272Z         },
2026-06-22T01:08:01.8464373Z         "int": {
2026-06-22T01:08:01.8464491Z           "complete": false,
2026-06-22T01:08:01.8464602Z           "evidence": []
2026-06-22T01:08:01.8464702Z         },
2026-06-22T01:08:01.8464815Z         "unit": {
2026-06-22T01:08:01.8464921Z           "complete": true,
2026-06-22T01:08:01.8465031Z           "evidence": [
2026-06-22T01:08:01.8465135Z             {
2026-06-22T01:08:01.8465297Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.8465406Z               "line": 212
2026-06-22T01:08:01.8465503Z             },
2026-06-22T01:08:01.8465598Z             {
2026-06-22T01:08:01.8465755Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T01:08:01.8465880Z               "line": 136
2026-06-22T01:08:01.8465988Z             },
2026-06-22T01:08:01.8466089Z             {
2026-06-22T01:08:01.8466261Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:08:01.8466374Z               "line": 685
2026-06-22T01:08:01.8466483Z             },
2026-06-22T01:08:01.8466583Z             {
2026-06-22T01:08:01.8466742Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:08:01.8466868Z               "line": 224
2026-06-22T01:08:01.8466972Z             },
2026-06-22T01:08:01.8467082Z             {
2026-06-22T01:08:01.8467230Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:08:01.8467349Z               "line": 206
2026-06-22T01:08:01.8467450Z             },
2026-06-22T01:08:01.8467554Z             {
2026-06-22T01:08:01.8467711Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:08:01.8467817Z               "line": 112
2026-06-22T01:08:01.8467926Z             },
2026-06-22T01:08:01.8468030Z             {
2026-06-22T01:08:01.8468164Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:08:01.8468288Z               "line": 157
2026-06-22T01:08:01.8468394Z             },
2026-06-22T01:08:01.8468498Z             {
2026-06-22T01:08:01.8468646Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:01.8468771Z               "line": 215
2026-06-22T01:08:01.8468874Z             },
2026-06-22T01:08:01.8469053Z             {
2026-06-22T01:08:01.8469194Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:08:01.8469312Z               "line": 141
2026-06-22T01:08:01.8469422Z             },
2026-06-22T01:08:01.8469525Z             {
2026-06-22T01:08:01.8469663Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:08:01.8469769Z               "line": 162
2026-06-22T01:08:01.8469877Z             }
2026-06-22T01:08:01.8469963Z           ]
2026-06-22T01:08:01.8470074Z         }
2026-06-22T01:08:01.8470177Z       }
2026-06-22T01:08:01.8470283Z     },
2026-06-22T01:08:01.8470388Z     {
2026-06-22T01:08:01.8470540Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-22T01:08:01.8472501Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-22T01:08:01.8472749Z       "requiredStages": [
2026-06-22T01:08:01.8472859Z         "doc",
2026-06-22T01:08:01.8472964Z         "impl",
2026-06-22T01:08:01.8473073Z         "unit",
2026-06-22T01:08:01.8473179Z         "int"
2026-06-22T01:08:01.8473284Z       ],
2026-06-22T01:08:01.8473393Z       "stages": {
2026-06-22T01:08:01.8473613Z         "doc": {
2026-06-22T01:08:01.8473727Z           "complete": true,
2026-06-22T01:08:01.8473838Z           "evidence": [
2026-06-22T01:08:01.8473941Z             {
2026-06-22T01:08:01.8474084Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.8474205Z               "line": 250
2026-06-22T01:08:01.8474304Z             }
2026-06-22T01:08:01.8474419Z           ]
2026-06-22T01:08:01.8474515Z         },
2026-06-22T01:08:01.8474623Z         "impl": {
2026-06-22T01:08:01.8474736Z           "complete": true,
2026-06-22T01:08:01.8474857Z           "evidence": [
2026-06-22T01:08:01.8474966Z             {
2026-06-22T01:08:01.8475094Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:08:01.8475209Z               "line": 135
2026-06-22T01:08:01.8475314Z             },
2026-06-22T01:08:01.8475419Z             {
2026-06-22T01:08:01.8475562Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:08:01.8475675Z               "line": 157
2026-06-22T01:08:01.8475791Z             }
2026-06-22T01:08:01.8475895Z           ]
2026-06-22T01:08:01.8476005Z         },
2026-06-22T01:08:01.8476106Z         "int": {
2026-06-22T01:08:01.8476224Z           "complete": true,
2026-06-22T01:08:01.8476339Z           "evidence": [
2026-06-22T01:08:01.8476445Z             {
2026-06-22T01:08:01.8476610Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-22T01:08:01.8476726Z               "line": 15
2026-06-22T01:08:01.8476839Z             }
2026-06-22T01:08:01.8476934Z           ]
2026-06-22T01:08:01.8477034Z         },
2026-06-22T01:08:01.8477138Z         "unit": {
2026-06-22T01:08:01.8477246Z           "complete": true,
2026-06-22T01:08:01.8477365Z           "evidence": [
2026-06-22T01:08:01.8477467Z             {
2026-06-22T01:08:01.8477618Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-22T01:08:01.8477734Z               "line": 233
2026-06-22T01:08:01.8477838Z             }
2026-06-22T01:08:01.8477933Z           ]
2026-06-22T01:08:01.8478044Z         }
2026-06-22T01:08:01.8478148Z       }
2026-06-22T01:08:01.8478247Z     },
2026-06-22T01:08:01.8478349Z     {
2026-06-22T01:08:01.8478491Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-22T01:08:01.8478678Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-22T01:08:01.8478792Z       "requiredStages": [
2026-06-22T01:08:01.8478906Z         "impl",
2026-06-22T01:08:01.8479082Z         "unit"
2026-06-22T01:08:01.8479191Z       ],
2026-06-22T01:08:01.8479303Z       "stages": {
2026-06-22T01:08:01.8479406Z         "doc": {
2026-06-22T01:08:01.8479531Z           "complete": false,
2026-06-22T01:08:01.8479637Z           "evidence": []
2026-06-22T01:08:01.8479744Z         },
2026-06-22T01:08:01.8479857Z         "impl": {
2026-06-22T01:08:01.8479968Z           "complete": true,
2026-06-22T01:08:01.8480080Z           "evidence": [
2026-06-22T01:08:01.8480184Z             {
2026-06-22T01:08:01.8480333Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8480437Z               "line": 95
2026-06-22T01:08:01.8480543Z             },
2026-06-22T01:08:01.8480652Z             {
2026-06-22T01:08:01.8480785Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8480901Z               "line": 117
2026-06-22T01:08:01.8481001Z             }
2026-06-22T01:08:01.8481110Z           ]
2026-06-22T01:08:01.8481315Z         },
2026-06-22T01:08:01.8481425Z         "int": {
2026-06-22T01:08:01.8481545Z           "complete": false,
2026-06-22T01:08:01.8481649Z           "evidence": []
2026-06-22T01:08:01.8481754Z         },
2026-06-22T01:08:01.8481850Z         "unit": {
2026-06-22T01:08:01.8481972Z           "complete": true,
2026-06-22T01:08:01.8482078Z           "evidence": [
2026-06-22T01:08:01.8482184Z             {
2026-06-22T01:08:01.8482330Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8482439Z               "line": 250
2026-06-22T01:08:01.8482558Z             },
2026-06-22T01:08:01.8482666Z             {
2026-06-22T01:08:01.8482819Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8483037Z               "line": 412
2026-06-22T01:08:01.8483144Z             },
2026-06-22T01:08:01.8483253Z             {
2026-06-22T01:08:01.8483395Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8483510Z               "line": 611
2026-06-22T01:08:01.8483605Z             },
2026-06-22T01:08:01.8483710Z             {
2026-06-22T01:08:01.8483839Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8483962Z               "line": 669
2026-06-22T01:08:01.8484058Z             }
2026-06-22T01:08:01.8484163Z           ]
2026-06-22T01:08:01.8484268Z         }
2026-06-22T01:08:01.8484369Z       }
2026-06-22T01:08:01.8484464Z     },
2026-06-22T01:08:01.8484559Z     {
2026-06-22T01:08:01.8484698Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-22T01:08:01.8487180Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-22T01:08:01.8487329Z       "requiredStages": [
2026-06-22T01:08:01.8487433Z         "impl",
2026-06-22T01:08:01.8487546Z         "unit",
2026-06-22T01:08:01.8487646Z         "int"
2026-06-22T01:08:01.8487754Z       ],
2026-06-22T01:08:01.8487859Z       "stages": {
2026-06-22T01:08:01.8487969Z         "doc": {
2026-06-22T01:08:01.8488111Z           "complete": false,
2026-06-22T01:08:01.8488221Z           "evidence": []
2026-06-22T01:08:01.8488327Z         },
2026-06-22T01:08:01.8488435Z         "impl": {
2026-06-22T01:08:01.8488561Z           "complete": true,
2026-06-22T01:08:01.8488660Z           "evidence": [
2026-06-22T01:08:01.8488774Z             {
2026-06-22T01:08:01.8488928Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8489122Z               "line": 925
2026-06-22T01:08:01.8489332Z             },
2026-06-22T01:08:01.8489427Z             {
2026-06-22T01:08:01.8489581Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8489695Z               "line": 994
2026-06-22T01:08:01.8489810Z             }
2026-06-22T01:08:01.8489910Z           ]
2026-06-22T01:08:01.8490009Z         },
2026-06-22T01:08:01.8490120Z         "int": {
2026-06-22T01:08:01.8490244Z           "complete": true,
2026-06-22T01:08:01.8490352Z           "evidence": [
2026-06-22T01:08:01.8490461Z             {
2026-06-22T01:08:01.8490612Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:08:01.8490721Z               "line": 187
2026-06-22T01:08:01.8490826Z             },
2026-06-22T01:08:01.8490932Z             {
2026-06-22T01:08:01.8491083Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T01:08:01.8491317Z               "line": 348
2026-06-22T01:08:01.8491423Z             }
2026-06-22T01:08:01.8491532Z           ]
2026-06-22T01:08:01.8491631Z         },
2026-06-22T01:08:01.8491737Z         "unit": {
2026-06-22T01:08:01.8491851Z           "complete": true,
2026-06-22T01:08:01.8491985Z           "evidence": [
2026-06-22T01:08:01.8492091Z             {
2026-06-22T01:08:01.8492237Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8492352Z               "line": 1206
2026-06-22T01:08:01.8492486Z             },
2026-06-22T01:08:01.8492590Z             {
2026-06-22T01:08:01.8492725Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8492942Z               "line": 8116
2026-06-22T01:08:01.8493047Z             }
2026-06-22T01:08:01.8493137Z           ]
2026-06-22T01:08:01.8493245Z         }
2026-06-22T01:08:01.8493350Z       }
2026-06-22T01:08:01.8493451Z     },
2026-06-22T01:08:01.8493559Z     {
2026-06-22T01:08:01.8493694Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-22T01:08:01.8493908Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-22T01:08:01.8494019Z       "requiredStages": [
2026-06-22T01:08:01.8494128Z         "impl",
2026-06-22T01:08:01.8494241Z         "unit"
2026-06-22T01:08:01.8494343Z       ],
2026-06-22T01:08:01.8494456Z       "stages": {
2026-06-22T01:08:01.8494561Z         "doc": {
2026-06-22T01:08:01.8494681Z           "complete": false,
2026-06-22T01:08:01.8494781Z           "evidence": []
2026-06-22T01:08:01.8494890Z         },
2026-06-22T01:08:01.8495001Z         "impl": {
2026-06-22T01:08:01.8495114Z           "complete": true,
2026-06-22T01:08:01.8495234Z           "evidence": [
2026-06-22T01:08:01.8495335Z             {
2026-06-22T01:08:01.8495486Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8495597Z               "line": 262
2026-06-22T01:08:01.8495705Z             },
2026-06-22T01:08:01.8495809Z             {
2026-06-22T01:08:01.8495953Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8496076Z               "line": 307
2026-06-22T01:08:01.8496181Z             },
2026-06-22T01:08:01.8496292Z             {
2026-06-22T01:08:01.8496429Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8496554Z               "line": 319
2026-06-22T01:08:01.8496663Z             }
2026-06-22T01:08:01.8496763Z           ]
2026-06-22T01:08:01.8496868Z         },
2026-06-22T01:08:01.8496973Z         "int": {
2026-06-22T01:08:01.8497092Z           "complete": false,
2026-06-22T01:08:01.8497208Z           "evidence": []
2026-06-22T01:08:01.8497311Z         },
2026-06-22T01:08:01.8497416Z         "unit": {
2026-06-22T01:08:01.8497523Z           "complete": true,
2026-06-22T01:08:01.8497636Z           "evidence": [
2026-06-22T01:08:01.8497736Z             {
2026-06-22T01:08:01.8497885Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8498002Z               "line": 455
2026-06-22T01:08:01.8498111Z             },
2026-06-22T01:08:01.8498230Z             {
2026-06-22T01:08:01.8498361Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8498486Z               "line": 499
2026-06-22T01:08:01.8498587Z             }
2026-06-22T01:08:01.8498690Z           ]
2026-06-22T01:08:01.8498791Z         }
2026-06-22T01:08:01.8498896Z       }
2026-06-22T01:08:01.8499086Z     },
2026-06-22T01:08:01.8499183Z     {
2026-06-22T01:08:01.8499311Z       "id": "REQ-HOST-RUN-1",
2026-06-22T01:08:01.8501854Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-22T01:08:01.8502121Z       "requiredStages": [
2026-06-22T01:08:01.8502230Z         "impl",
2026-06-22T01:08:01.8502341Z         "unit",
2026-06-22T01:08:01.8502444Z         "int"
2026-06-22T01:08:01.8502554Z       ],
2026-06-22T01:08:01.8502665Z       "stages": {
2026-06-22T01:08:01.8502773Z         "doc": {
2026-06-22T01:08:01.8502879Z           "complete": false,
2026-06-22T01:08:01.8502989Z           "evidence": []
2026-06-22T01:08:01.8503203Z         },
2026-06-22T01:08:01.8503304Z         "impl": {
2026-06-22T01:08:01.8503422Z           "complete": true,
2026-06-22T01:08:01.8503531Z           "evidence": [
2026-06-22T01:08:01.8503641Z             {
2026-06-22T01:08:01.8503800Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8503920Z               "line": 30
2026-06-22T01:08:01.8504021Z             },
2026-06-22T01:08:01.8504124Z             {
2026-06-22T01:08:01.8504283Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8504387Z               "line": 76
2026-06-22T01:08:01.8504492Z             },
2026-06-22T01:08:01.8504598Z             {
2026-06-22T01:08:01.8504753Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8504874Z               "line": 181
2026-06-22T01:08:01.8504969Z             },
2026-06-22T01:08:01.8505073Z             {
2026-06-22T01:08:01.8505208Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8505331Z               "line": 1266
2026-06-22T01:08:01.8505426Z             }
2026-06-22T01:08:01.8505542Z           ]
2026-06-22T01:08:01.8505645Z         },
2026-06-22T01:08:01.8505746Z         "int": {
2026-06-22T01:08:01.8505862Z           "complete": true,
2026-06-22T01:08:01.8505969Z           "evidence": [
2026-06-22T01:08:01.8506080Z             {
2026-06-22T01:08:01.8506219Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8506336Z               "line": 288
2026-06-22T01:08:01.8506446Z             }
2026-06-22T01:08:01.8506547Z           ]
2026-06-22T01:08:01.8506656Z         },
2026-06-22T01:08:01.8506760Z         "unit": {
2026-06-22T01:08:01.8506880Z           "complete": true,
2026-06-22T01:08:01.8506994Z           "evidence": [
2026-06-22T01:08:01.8507099Z             {
2026-06-22T01:08:01.8507262Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8507370Z               "line": 229
2026-06-22T01:08:01.8507472Z             },
2026-06-22T01:08:01.8507581Z             {
2026-06-22T01:08:01.8507743Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8507853Z               "line": 296
2026-06-22T01:08:01.8507962Z             },
2026-06-22T01:08:01.8508073Z             {
2026-06-22T01:08:01.8508224Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8508348Z               "line": 419
2026-06-22T01:08:01.8508450Z             }
2026-06-22T01:08:01.8508553Z           ]
2026-06-22T01:08:01.8508657Z         }
2026-06-22T01:08:01.8508758Z       }
2026-06-22T01:08:01.8508865Z     },
2026-06-22T01:08:01.8509036Z     {
2026-06-22T01:08:01.8509166Z       "id": "REQ-HOST-RUN-2",
2026-06-22T01:08:01.8510925Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-22T01:08:01.8511159Z       "requiredStages": [
2026-06-22T01:08:01.8511269Z         "impl",
2026-06-22T01:08:01.8511373Z         "unit",
2026-06-22T01:08:01.8511481Z         "int"
2026-06-22T01:08:01.8511581Z       ],
2026-06-22T01:08:01.8511690Z       "stages": {
2026-06-22T01:08:01.8511803Z         "doc": {
2026-06-22T01:08:01.8511913Z           "complete": false,
2026-06-22T01:08:01.8512033Z           "evidence": []
2026-06-22T01:08:01.8512127Z         },
2026-06-22T01:08:01.8512238Z         "impl": {
2026-06-22T01:08:01.8512343Z           "complete": true,
2026-06-22T01:08:01.8512456Z           "evidence": [
2026-06-22T01:08:01.8512658Z             {
2026-06-22T01:08:01.8512814Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.8512925Z               "line": 182
2026-06-22T01:08:01.8513034Z             },
2026-06-22T01:08:01.8513139Z             {
2026-06-22T01:08:01.8513273Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:08:01.8513391Z               "line": 113
2026-06-22T01:08:01.8513492Z             }
2026-06-22T01:08:01.8513597Z           ]
2026-06-22T01:08:01.8513706Z         },
2026-06-22T01:08:01.8513812Z         "int": {
2026-06-22T01:08:01.8513917Z           "complete": true,
2026-06-22T01:08:01.8514024Z           "evidence": [
2026-06-22T01:08:01.8514134Z             {
2026-06-22T01:08:01.8514281Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8514389Z               "line": 575
2026-06-22T01:08:01.8514494Z             }
2026-06-22T01:08:01.8514596Z           ]
2026-06-22T01:08:01.8514708Z         },
2026-06-22T01:08:01.8514809Z         "unit": {
2026-06-22T01:08:01.8514934Z           "complete": true,
2026-06-22T01:08:01.8515047Z           "evidence": [
2026-06-22T01:08:01.8515134Z             {
2026-06-22T01:08:01.8515286Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T01:08:01.8515395Z               "line": 86
2026-06-22T01:08:01.8515506Z             }
2026-06-22T01:08:01.8515596Z           ]
2026-06-22T01:08:01.8515696Z         }
2026-06-22T01:08:01.8515797Z       }
2026-06-22T01:08:01.8515901Z     },
2026-06-22T01:08:01.8516006Z     {
2026-06-22T01:08:01.8516112Z       "id": "REQ-INFRA-1",
2026-06-22T01:08:01.8516316Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-22T01:08:01.8516436Z       "requiredStages": [],
2026-06-22T01:08:01.8516548Z       "stages": {
2026-06-22T01:08:01.8516655Z         "doc": {
2026-06-22T01:08:01.8516775Z           "complete": false,
2026-06-22T01:08:01.8516887Z           "evidence": []
2026-06-22T01:08:01.8516986Z         },
2026-06-22T01:08:01.8517102Z         "impl": {
2026-06-22T01:08:01.8517220Z           "complete": false,
2026-06-22T01:08:01.8517340Z           "evidence": []
2026-06-22T01:08:01.8517450Z         },
2026-06-22T01:08:01.8517554Z         "int": {
2026-06-22T01:08:01.8517674Z           "complete": false,
2026-06-22T01:08:01.8517783Z           "evidence": []
2026-06-22T01:08:01.8517888Z         },
2026-06-22T01:08:01.8517984Z         "unit": {
2026-06-22T01:08:01.8518098Z           "complete": false,
2026-06-22T01:08:01.8518217Z           "evidence": []
2026-06-22T01:08:01.8518318Z         }
2026-06-22T01:08:01.8518427Z       }
2026-06-22T01:08:01.8518532Z     },
2026-06-22T01:08:01.8518638Z     {
2026-06-22T01:08:01.8518756Z       "id": "REQ-INST-1",
2026-06-22T01:08:01.8519019Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-22T01:08:01.8519137Z       "requiredStages": [],
2026-06-22T01:08:01.8519246Z       "stages": {
2026-06-22T01:08:01.8519355Z         "doc": {
2026-06-22T01:08:01.8519473Z           "complete": false,
2026-06-22T01:08:01.8519592Z           "evidence": []
2026-06-22T01:08:01.8519693Z         },
2026-06-22T01:08:01.8519801Z         "impl": {
2026-06-22T01:08:01.8519921Z           "complete": false,
2026-06-22T01:08:01.8520031Z           "evidence": []
2026-06-22T01:08:01.8520135Z         },
2026-06-22T01:08:01.8520346Z         "int": {
2026-06-22T01:08:01.8520469Z           "complete": false,
2026-06-22T01:08:01.8520580Z           "evidence": []
2026-06-22T01:08:01.8520694Z         },
2026-06-22T01:08:01.8520803Z         "unit": {
2026-06-22T01:08:01.8520918Z           "complete": false,
2026-06-22T01:08:01.8521018Z           "evidence": []
2026-06-22T01:08:01.8521113Z         }
2026-06-22T01:08:01.8521224Z       }
2026-06-22T01:08:01.8521318Z     },
2026-06-22T01:08:01.8521423Z     {
2026-06-22T01:08:01.8521544Z       "id": "REQ-INST-10",
2026-06-22T01:08:01.8521776Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-22T01:08:01.8521999Z       "requiredStages": [
2026-06-22T01:08:01.8522098Z         "impl",
2026-06-22T01:08:01.8522204Z         "unit"
2026-06-22T01:08:01.8522311Z       ],
2026-06-22T01:08:01.8522420Z       "stages": {
2026-06-22T01:08:01.8522526Z         "doc": {
2026-06-22T01:08:01.8522640Z           "complete": false,
2026-06-22T01:08:01.8522754Z           "evidence": []
2026-06-22T01:08:01.8522851Z         },
2026-06-22T01:08:01.8522955Z         "impl": {
2026-06-22T01:08:01.8523064Z           "complete": true,
2026-06-22T01:08:01.8523170Z           "evidence": [
2026-06-22T01:08:01.8523279Z             {
2026-06-22T01:08:01.8523432Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8523546Z               "line": 648
2026-06-22T01:08:01.8523646Z             },
2026-06-22T01:08:01.8523757Z             {
2026-06-22T01:08:01.8523894Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8524013Z               "line": 725
2026-06-22T01:08:01.8524114Z             },
2026-06-22T01:08:01.8524223Z             {
2026-06-22T01:08:01.8524362Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:08:01.8524472Z               "line": 13
2026-06-22T01:08:01.8524580Z             },
2026-06-22T01:08:01.8524679Z             {
2026-06-22T01:08:01.8524817Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:08:01.8524939Z               "line": 67
2026-06-22T01:08:01.8525035Z             },
2026-06-22T01:08:01.8525141Z             {
2026-06-22T01:08:01.8525268Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.8525379Z               "line": 18
2026-06-22T01:08:01.8525484Z             },
2026-06-22T01:08:01.8525588Z             {
2026-06-22T01:08:01.8525737Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.8525846Z               "line": 444
2026-06-22T01:08:01.8525955Z             }
2026-06-22T01:08:01.8526056Z           ]
2026-06-22T01:08:01.8526166Z         },
2026-06-22T01:08:01.8526270Z         "int": {
2026-06-22T01:08:01.8526390Z           "complete": false,
2026-06-22T01:08:01.8526504Z           "evidence": []
2026-06-22T01:08:01.8526604Z         },
2026-06-22T01:08:01.8526719Z         "unit": {
2026-06-22T01:08:01.8526838Z           "complete": true,
2026-06-22T01:08:01.8526954Z           "evidence": [
2026-06-22T01:08:01.8527057Z             {
2026-06-22T01:08:01.8527215Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8527335Z               "line": 932
2026-06-22T01:08:01.8527438Z             },
2026-06-22T01:08:01.8527542Z             {
2026-06-22T01:08:01.8527686Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8527809Z               "line": 1309
2026-06-22T01:08:01.8527919Z             },
2026-06-22T01:08:01.8528019Z             {
2026-06-22T01:08:01.8528171Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8528287Z               "line": 1320
2026-06-22T01:08:01.8528392Z             },
2026-06-22T01:08:01.8528501Z             {
2026-06-22T01:08:01.8528649Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8528762Z               "line": 1336
2026-06-22T01:08:01.8528869Z             },
2026-06-22T01:08:01.8529040Z             {
2026-06-22T01:08:01.8529188Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8529430Z               "line": 1352
2026-06-22T01:08:01.8529527Z             },
2026-06-22T01:08:01.8529631Z             {
2026-06-22T01:08:01.8529782Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8529897Z               "line": 1374
2026-06-22T01:08:01.8530004Z             },
2026-06-22T01:08:01.8530103Z             {
2026-06-22T01:08:01.8530258Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8530366Z               "line": 1679
2026-06-22T01:08:01.8530472Z             },
2026-06-22T01:08:01.8530581Z             {
2026-06-22T01:08:01.8530714Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:08:01.8530925Z               "line": 130
2026-06-22T01:08:01.8531034Z             },
2026-06-22T01:08:01.8531140Z             {
2026-06-22T01:08:01.8531282Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:08:01.8531391Z               "line": 167
2026-06-22T01:08:01.8531502Z             },
2026-06-22T01:08:01.8531606Z             {
2026-06-22T01:08:01.8531755Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:08:01.8531868Z               "line": 175
2026-06-22T01:08:01.8531973Z             },
2026-06-22T01:08:01.8532070Z             {
2026-06-22T01:08:01.8532211Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T01:08:01.8532322Z               "line": 183
2026-06-22T01:08:01.8532414Z             },
2026-06-22T01:08:01.8532521Z             {
2026-06-22T01:08:01.8532649Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.8532750Z               "line": 896
2026-06-22T01:08:01.8532848Z             }
2026-06-22T01:08:01.8532956Z           ]
2026-06-22T01:08:01.8533062Z         }
2026-06-22T01:08:01.8533163Z       }
2026-06-22T01:08:01.8533262Z     },
2026-06-22T01:08:01.8533353Z     {
2026-06-22T01:08:01.8533463Z       "id": "REQ-INST-11",
2026-06-22T01:08:01.8533697Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-22T01:08:01.8533816Z       "requiredStages": [
2026-06-22T01:08:01.8533925Z         "impl",
2026-06-22T01:08:01.8534026Z         "unit"
2026-06-22T01:08:01.8534121Z       ],
2026-06-22T01:08:01.8534226Z       "stages": {
2026-06-22T01:08:01.8534327Z         "doc": {
2026-06-22T01:08:01.8534440Z           "complete": false,
2026-06-22T01:08:01.8534550Z           "evidence": []
2026-06-22T01:08:01.8534656Z         },
2026-06-22T01:08:01.8534764Z         "impl": {
2026-06-22T01:08:01.8534874Z           "complete": true,
2026-06-22T01:08:01.8534985Z           "evidence": [
2026-06-22T01:08:01.8535093Z             {
2026-06-22T01:08:01.8535240Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8535349Z               "line": 514
2026-06-22T01:08:01.8535457Z             },
2026-06-22T01:08:01.8535542Z             {
2026-06-22T01:08:01.8535701Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8535810Z               "line": 297
2026-06-22T01:08:01.8535920Z             },
2026-06-22T01:08:01.8536025Z             {
2026-06-22T01:08:01.8536167Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:08:01.8536283Z               "line": 59
2026-06-22T01:08:01.8536382Z             },
2026-06-22T01:08:01.8536481Z             {
2026-06-22T01:08:01.8536616Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8536735Z               "line": 5291
2026-06-22T01:08:01.8536835Z             },
2026-06-22T01:08:01.8536941Z             {
2026-06-22T01:08:01.8537083Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8537194Z               "line": 7137
2026-06-22T01:08:01.8537307Z             }
2026-06-22T01:08:01.8537412Z           ]
2026-06-22T01:08:01.8537518Z         },
2026-06-22T01:08:01.8537627Z         "int": {
2026-06-22T01:08:01.8537746Z           "complete": false,
2026-06-22T01:08:01.8537862Z           "evidence": []
2026-06-22T01:08:01.8537960Z         },
2026-06-22T01:08:01.8538069Z         "unit": {
2026-06-22T01:08:01.8538261Z           "complete": true,
2026-06-22T01:08:01.8538364Z           "evidence": [
2026-06-22T01:08:01.8538470Z             {
2026-06-22T01:08:01.8538628Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8538751Z               "line": 1479
2026-06-22T01:08:01.8538852Z             },
2026-06-22T01:08:01.8539036Z             {
2026-06-22T01:08:01.8539181Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8539304Z               "line": 1512
2026-06-22T01:08:01.8539414Z             },
2026-06-22T01:08:01.8539510Z             {
2026-06-22T01:08:01.8539671Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8539881Z               "line": 527
2026-06-22T01:08:01.8539985Z             },
2026-06-22T01:08:01.8540087Z             {
2026-06-22T01:08:01.8540243Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:08:01.8540351Z               "line": 160
2026-06-22T01:08:01.8540457Z             },
2026-06-22T01:08:01.8544838Z             {
2026-06-22T01:08:01.8545033Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:08:01.8545158Z               "line": 190
2026-06-22T01:08:01.8545259Z             },
2026-06-22T01:08:01.8545367Z             {
2026-06-22T01:08:01.8545521Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T01:08:01.8545630Z               "line": 225
2026-06-22T01:08:01.8545733Z             },
2026-06-22T01:08:01.8545838Z             {
2026-06-22T01:08:01.8545984Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8546102Z               "line": 7994
2026-06-22T01:08:01.8546208Z             }
2026-06-22T01:08:01.8546332Z           ]
2026-06-22T01:08:01.8546432Z         }
2026-06-22T01:08:01.8546732Z       }
2026-06-22T01:08:01.8546833Z     },
2026-06-22T01:08:01.8546942Z     {
2026-06-22T01:08:01.8547061Z       "id": "REQ-INST-12",
2026-06-22T01:08:01.8547381Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-22T01:08:01.8547515Z       "requiredStages": [
2026-06-22T01:08:01.8547610Z         "impl",
2026-06-22T01:08:01.8547720Z         "unit"
2026-06-22T01:08:01.8547820Z       ],
2026-06-22T01:08:01.8547924Z       "stages": {
2026-06-22T01:08:01.8548030Z         "doc": {
2026-06-22T01:08:01.8548154Z           "complete": false,
2026-06-22T01:08:01.8548258Z           "evidence": []
2026-06-22T01:08:01.8548360Z         },
2026-06-22T01:08:01.8548474Z         "impl": {
2026-06-22T01:08:01.8548587Z           "complete": true,
2026-06-22T01:08:01.8548700Z           "evidence": [
2026-06-22T01:08:01.8548802Z             {
2026-06-22T01:08:01.8549040Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8549164Z               "line": 566
2026-06-22T01:08:01.8549267Z             },
2026-06-22T01:08:01.8549379Z             {
2026-06-22T01:08:01.8549540Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8549654Z               "line": 659
2026-06-22T01:08:01.8549750Z             },
2026-06-22T01:08:01.8549864Z             {
2026-06-22T01:08:01.8550018Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8550136Z               "line": 739
2026-06-22T01:08:01.8550245Z             },
2026-06-22T01:08:01.8550337Z             {
2026-06-22T01:08:01.8550488Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8550599Z               "line": 96
2026-06-22T01:08:01.8550704Z             },
2026-06-22T01:08:01.8550812Z             {
2026-06-22T01:08:01.8550955Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8551078Z               "line": 269
2026-06-22T01:08:01.8551182Z             },
2026-06-22T01:08:01.8551282Z             {
2026-06-22T01:08:01.8551425Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8551544Z               "line": 148
2026-06-22T01:08:01.8551650Z             }
2026-06-22T01:08:01.8551749Z           ]
2026-06-22T01:08:01.8552026Z         },
2026-06-22T01:08:01.8552130Z         "int": {
2026-06-22T01:08:01.8552260Z           "complete": false,
2026-06-22T01:08:01.8552369Z           "evidence": []
2026-06-22T01:08:01.8552478Z         },
2026-06-22T01:08:01.8552594Z         "unit": {
2026-06-22T01:08:01.8552708Z           "complete": true,
2026-06-22T01:08:01.8552832Z           "evidence": [
2026-06-22T01:08:01.8552933Z             {
2026-06-22T01:08:01.8553084Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8553195Z               "line": 1554
2026-06-22T01:08:01.8553295Z             },
2026-06-22T01:08:01.8553394Z             {
2026-06-22T01:08:01.8553638Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8553760Z               "line": 1577
2026-06-22T01:08:01.8553865Z             },
2026-06-22T01:08:01.8553978Z             {
2026-06-22T01:08:01.8554115Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8554235Z               "line": 1614
2026-06-22T01:08:01.8554344Z             },
2026-06-22T01:08:01.8554449Z             {
2026-06-22T01:08:01.8554598Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8554702Z               "line": 457
2026-06-22T01:08:01.8554803Z             },
2026-06-22T01:08:01.8554912Z             {
2026-06-22T01:08:01.8555059Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8555170Z               "line": 185
2026-06-22T01:08:01.8555275Z             },
2026-06-22T01:08:01.8555384Z             {
2026-06-22T01:08:01.8555532Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8555646Z               "line": 206
2026-06-22T01:08:01.8555752Z             },
2026-06-22T01:08:01.8555852Z             {
2026-06-22T01:08:01.8556004Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8556110Z               "line": 232
2026-06-22T01:08:01.8556218Z             }
2026-06-22T01:08:01.8556322Z           ]
2026-06-22T01:08:01.8556432Z         }
2026-06-22T01:08:01.8556539Z       }
2026-06-22T01:08:01.8556644Z     },
2026-06-22T01:08:01.8556749Z     {
2026-06-22T01:08:01.8556864Z       "id": "REQ-INST-13",
2026-06-22T01:08:01.8557079Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-22T01:08:01.8557197Z       "requiredStages": [
2026-06-22T01:08:01.8557311Z         "impl",
2026-06-22T01:08:01.8557412Z         "unit"
2026-06-22T01:08:01.8557512Z       ],
2026-06-22T01:08:01.8557626Z       "stages": {
2026-06-22T01:08:01.8557723Z         "doc": {
2026-06-22T01:08:01.8557836Z           "complete": false,
2026-06-22T01:08:01.8557946Z           "evidence": []
2026-06-22T01:08:01.8558066Z         },
2026-06-22T01:08:01.8558165Z         "impl": {
2026-06-22T01:08:01.8558270Z           "complete": true,
2026-06-22T01:08:01.8558381Z           "evidence": [
2026-06-22T01:08:01.8558485Z             {
2026-06-22T01:08:01.8558634Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8558747Z               "line": 100
2026-06-22T01:08:01.8558857Z             },
2026-06-22T01:08:01.8559034Z             {
2026-06-22T01:08:01.8559179Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8559295Z               "line": 171
2026-06-22T01:08:01.8559395Z             }
2026-06-22T01:08:01.8559490Z           ]
2026-06-22T01:08:01.8559590Z         },
2026-06-22T01:08:01.8559691Z         "int": {
2026-06-22T01:08:01.8559814Z           "complete": false,
2026-06-22T01:08:01.8559925Z           "evidence": []
2026-06-22T01:08:01.8560024Z         },
2026-06-22T01:08:01.8560124Z         "unit": {
2026-06-22T01:08:01.8560254Z           "complete": true,
2026-06-22T01:08:01.8560367Z           "evidence": [
2026-06-22T01:08:01.8560472Z             {
2026-06-22T01:08:01.8560616Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8560725Z               "line": 261
2026-06-22T01:08:01.8560830Z             },
2026-06-22T01:08:01.8561044Z             {
2026-06-22T01:08:01.8561183Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T01:08:01.8561293Z               "line": 279
2026-06-22T01:08:01.8561401Z             }
2026-06-22T01:08:01.8561510Z           ]
2026-06-22T01:08:01.8561619Z         }
2026-06-22T01:08:01.8561722Z       }
2026-06-22T01:08:01.8561833Z     },
2026-06-22T01:08:01.8561938Z     {
2026-06-22T01:08:01.8562056Z       "id": "REQ-INST-14",
2026-06-22T01:08:01.8562462Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-22T01:08:01.8562577Z       "requiredStages": [
2026-06-22T01:08:01.8562787Z         "doc",
2026-06-22T01:08:01.8562901Z         "impl",
2026-06-22T01:08:01.8563005Z         "unit"
2026-06-22T01:08:01.8563111Z       ],
2026-06-22T01:08:01.8563220Z       "stages": {
2026-06-22T01:08:01.8563325Z         "doc": {
2026-06-22T01:08:01.8563450Z           "complete": true,
2026-06-22T01:08:01.8563568Z           "evidence": [
2026-06-22T01:08:01.8563672Z             {
2026-06-22T01:08:01.8563789Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8563902Z               "line": 588
2026-06-22T01:08:01.8564007Z             },
2026-06-22T01:08:01.8564108Z             {
2026-06-22T01:08:01.8564226Z               "path": "docs/STORAGE.md",
2026-06-22T01:08:01.8564335Z               "line": 49
2026-06-22T01:08:01.8564439Z             }
2026-06-22T01:08:01.8564533Z           ]
2026-06-22T01:08:01.8564642Z         },
2026-06-22T01:08:01.8564752Z         "impl": {
2026-06-22T01:08:01.8564872Z           "complete": true,
2026-06-22T01:08:01.8564990Z           "evidence": [
2026-06-22T01:08:01.8565092Z             {
2026-06-22T01:08:01.8565257Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8565363Z               "line": 410
2026-06-22T01:08:01.8565463Z             },
2026-06-22T01:08:01.8565557Z             {
2026-06-22T01:08:01.8565716Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8565830Z               "line": 367
2026-06-22T01:08:01.8565930Z             },
2026-06-22T01:08:01.8566041Z             {
2026-06-22T01:08:01.8566178Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8566288Z               "line": 293
2026-06-22T01:08:01.8566389Z             },
2026-06-22T01:08:01.8566497Z             {
2026-06-22T01:08:01.8566637Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8566750Z               "line": 1577
2026-06-22T01:08:01.8566859Z             }
2026-06-22T01:08:01.8566959Z           ]
2026-06-22T01:08:01.8567067Z         },
2026-06-22T01:08:01.8567171Z         "int": {
2026-06-22T01:08:01.8567295Z           "complete": false,
2026-06-22T01:08:01.8567410Z           "evidence": []
2026-06-22T01:08:01.8567514Z         },
2026-06-22T01:08:01.8567620Z         "unit": {
2026-06-22T01:08:01.8567734Z           "complete": true,
2026-06-22T01:08:01.8567838Z           "evidence": [
2026-06-22T01:08:01.8567944Z             {
2026-06-22T01:08:01.8568110Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8568211Z               "line": 1163
2026-06-22T01:08:01.8568302Z             },
2026-06-22T01:08:01.8568406Z             {
2026-06-22T01:08:01.8568559Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8568668Z               "line": 944
2026-06-22T01:08:01.8568773Z             },
2026-06-22T01:08:01.8568879Z             {
2026-06-22T01:08:01.8569180Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8569316Z               "line": 1205
2026-06-22T01:08:01.8569431Z             },
2026-06-22T01:08:01.8569528Z             {
2026-06-22T01:08:01.8569668Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8569777Z               "line": 659
2026-06-22T01:08:01.8569879Z             },
2026-06-22T01:08:01.8569988Z             {
2026-06-22T01:08:01.8570116Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8570340Z               "line": 8070
2026-06-22T01:08:01.8570446Z             }
2026-06-22T01:08:01.8570551Z           ]
2026-06-22T01:08:01.8570651Z         }
2026-06-22T01:08:01.8570756Z       }
2026-06-22T01:08:01.8570856Z     },
2026-06-22T01:08:01.8570956Z     {
2026-06-22T01:08:01.8571075Z       "id": "REQ-INST-15",
2026-06-22T01:08:01.8571820Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-22T01:08:01.8572042Z       "requiredStages": [
2026-06-22T01:08:01.8572147Z         "doc",
2026-06-22T01:08:01.8572250Z         "impl",
2026-06-22T01:08:01.8572354Z         "unit"
2026-06-22T01:08:01.8572445Z       ],
2026-06-22T01:08:01.8572555Z       "stages": {
2026-06-22T01:08:01.8572659Z         "doc": {
2026-06-22T01:08:01.8572780Z           "complete": true,
2026-06-22T01:08:01.8572889Z           "evidence": [
2026-06-22T01:08:01.8572993Z             {
2026-06-22T01:08:01.8573208Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-22T01:08:01.8573313Z               "line": 3
2026-06-22T01:08:01.8573423Z             }
2026-06-22T01:08:01.8573523Z           ]
2026-06-22T01:08:01.8573623Z         },
2026-06-22T01:08:01.8573733Z         "impl": {
2026-06-22T01:08:01.8573852Z           "complete": true,
2026-06-22T01:08:01.8573967Z           "evidence": [
2026-06-22T01:08:01.8574062Z             {
2026-06-22T01:08:01.8574233Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8574353Z               "line": 353
2026-06-22T01:08:01.8574462Z             },
2026-06-22T01:08:01.8574567Z             {
2026-06-22T01:08:01.8574697Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8574805Z               "line": 60
2026-06-22T01:08:01.8574904Z             },
2026-06-22T01:08:01.8575019Z             {
2026-06-22T01:08:01.8575173Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8575289Z               "line": 368
2026-06-22T01:08:01.8575399Z             },
2026-06-22T01:08:01.8575507Z             {
2026-06-22T01:08:01.8575661Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8575770Z               "line": 417
2026-06-22T01:08:01.8575884Z             },
2026-06-22T01:08:01.8575990Z             {
2026-06-22T01:08:01.8576132Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8576248Z               "line": 19
2026-06-22T01:08:01.8576352Z             },
2026-06-22T01:08:01.8576461Z             {
2026-06-22T01:08:01.8576601Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8576718Z               "line": 70
2026-06-22T01:08:01.8576824Z             },
2026-06-22T01:08:01.8576925Z             {
2026-06-22T01:08:01.8577062Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8577173Z               "line": 96
2026-06-22T01:08:01.8577283Z             },
2026-06-22T01:08:01.8577390Z             {
2026-06-22T01:08:01.8577519Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8577628Z               "line": 121
2026-06-22T01:08:01.8577726Z             },
2026-06-22T01:08:01.8577832Z             {
2026-06-22T01:08:01.8577966Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8578079Z               "line": 172
2026-06-22T01:08:01.8578175Z             },
2026-06-22T01:08:01.8578280Z             {
2026-06-22T01:08:01.8578427Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8578533Z               "line": 178
2026-06-22T01:08:01.8578642Z             },
2026-06-22T01:08:01.8578747Z             {
2026-06-22T01:08:01.8578876Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8579090Z               "line": 1469
2026-06-22T01:08:01.8579191Z             }
2026-06-22T01:08:01.8579300Z           ]
2026-06-22T01:08:01.8579511Z         },
2026-06-22T01:08:01.8579610Z         "int": {
2026-06-22T01:08:01.8579725Z           "complete": false,
2026-06-22T01:08:01.8579830Z           "evidence": []
2026-06-22T01:08:01.8579929Z         },
2026-06-22T01:08:01.8580035Z         "unit": {
2026-06-22T01:08:01.8580155Z           "complete": true,
2026-06-22T01:08:01.8580257Z           "evidence": [
2026-06-22T01:08:01.8580367Z             {
2026-06-22T01:08:01.8580521Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8580639Z               "line": 577
2026-06-22T01:08:01.8580744Z             },
2026-06-22T01:08:01.8580845Z             {
2026-06-22T01:08:01.8581106Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.8581211Z               "line": 638
2026-06-22T01:08:01.8581316Z             },
2026-06-22T01:08:01.8581408Z             {
2026-06-22T01:08:01.8581549Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8581660Z               "line": 213
2026-06-22T01:08:01.8581774Z             },
2026-06-22T01:08:01.8581878Z             {
2026-06-22T01:08:01.8582013Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8582121Z               "line": 249
2026-06-22T01:08:01.8582222Z             },
2026-06-22T01:08:01.8582313Z             {
2026-06-22T01:08:01.8582450Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8582564Z               "line": 262
2026-06-22T01:08:01.8582660Z             },
2026-06-22T01:08:01.8582767Z             {
2026-06-22T01:08:01.8582909Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T01:08:01.8583025Z               "line": 338
2026-06-22T01:08:01.8583129Z             },
2026-06-22T01:08:01.8583234Z             {
2026-06-22T01:08:01.8583373Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8583487Z               "line": 690
2026-06-22T01:08:01.8583592Z             },
2026-06-22T01:08:01.8583687Z             {
2026-06-22T01:08:01.8583820Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8583936Z               "line": 8007
2026-06-22T01:08:01.8584040Z             },
2026-06-22T01:08:01.8584140Z             {
2026-06-22T01:08:01.8584270Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8584384Z               "line": 9837
2026-06-22T01:08:01.8584492Z             }
2026-06-22T01:08:01.8584594Z           ]
2026-06-22T01:08:01.8584702Z         }
2026-06-22T01:08:01.8584807Z       }
2026-06-22T01:08:01.8584914Z     },
2026-06-22T01:08:01.8585022Z     {
2026-06-22T01:08:01.8585132Z       "id": "REQ-INST-2",
2026-06-22T01:08:01.8585285Z       "title": "Per-node files, synced Psyche mind",
2026-06-22T01:08:01.8585407Z       "requiredStages": [
2026-06-22T01:08:01.8585517Z         "impl",
2026-06-22T01:08:01.8585625Z         "unit"
2026-06-22T01:08:01.8585738Z       ],
2026-06-22T01:08:01.8585844Z       "stages": {
2026-06-22T01:08:01.8585944Z         "doc": {
2026-06-22T01:08:01.8586063Z           "complete": false,
2026-06-22T01:08:01.8586178Z           "evidence": []
2026-06-22T01:08:01.8586283Z         },
2026-06-22T01:08:01.8586391Z         "impl": {
2026-06-22T01:08:01.8586507Z           "complete": true,
2026-06-22T01:08:01.8586626Z           "evidence": [
2026-06-22T01:08:01.8586730Z             {
2026-06-22T01:08:01.8586888Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8586998Z               "line": 108
2026-06-22T01:08:01.8587098Z             },
2026-06-22T01:08:01.8587203Z             {
2026-06-22T01:08:01.8587346Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.8587457Z               "line": 28
2026-06-22T01:08:01.8587556Z             },
2026-06-22T01:08:01.8587661Z             {
2026-06-22T01:08:01.8587790Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.8587903Z               "line": 74
2026-06-22T01:08:01.8588007Z             },
2026-06-22T01:08:01.8588107Z             {
2026-06-22T01:08:01.8588253Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.8588439Z               "line": 96
2026-06-22T01:08:01.8588549Z             },
2026-06-22T01:08:01.8588648Z             {
2026-06-22T01:08:01.8588788Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.8588892Z               "line": 86
2026-06-22T01:08:01.8589098Z             },
2026-06-22T01:08:01.8589245Z             {
2026-06-22T01:08:01.8589393Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T01:08:01.8589512Z               "line": 118
2026-06-22T01:08:01.8589607Z             }
2026-06-22T01:08:01.8589718Z           ]
2026-06-22T01:08:01.8589822Z         },
2026-06-22T01:08:01.8590037Z         "int": {
2026-06-22T01:08:01.8590155Z           "complete": false,
2026-06-22T01:08:01.8590266Z           "evidence": []
2026-06-22T01:08:01.8590362Z         },
2026-06-22T01:08:01.8590470Z         "unit": {
2026-06-22T01:08:01.8590590Z           "complete": true,
2026-06-22T01:08:01.8590696Z           "evidence": [
2026-06-22T01:08:01.8590803Z             {
2026-06-22T01:08:01.8590946Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T01:08:01.8591062Z               "line": 250
2026-06-22T01:08:01.8591160Z             },
2026-06-22T01:08:01.8591266Z             {
2026-06-22T01:08:01.8591410Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.8591518Z               "line": 280
2026-06-22T01:08:01.8591610Z             }
2026-06-22T01:08:01.8591714Z           ]
2026-06-22T01:08:01.8591809Z         }
2026-06-22T01:08:01.8591915Z       }
2026-06-22T01:08:01.8592014Z     },
2026-06-22T01:08:01.8592105Z     {
2026-06-22T01:08:01.8592225Z       "id": "REQ-INST-3",
2026-06-22T01:08:01.8592406Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-22T01:08:01.8592525Z       "requiredStages": [
2026-06-22T01:08:01.8592626Z         "doc",
2026-06-22T01:08:01.8592729Z         "impl",
2026-06-22T01:08:01.8592830Z         "unit"
2026-06-22T01:08:01.8592936Z       ],
2026-06-22T01:08:01.8593048Z       "stages": {
2026-06-22T01:08:01.8593152Z         "doc": {
2026-06-22T01:08:01.8593272Z           "complete": true,
2026-06-22T01:08:01.8593384Z           "evidence": [
2026-06-22T01:08:01.8593489Z             {
2026-06-22T01:08:01.8593624Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-22T01:08:01.8593732Z               "line": 3
2026-06-22T01:08:01.8593828Z             }
2026-06-22T01:08:01.8593933Z           ]
2026-06-22T01:08:01.8594042Z         },
2026-06-22T01:08:01.8594147Z         "impl": {
2026-06-22T01:08:01.8594271Z           "complete": true,
2026-06-22T01:08:01.8594385Z           "evidence": [
2026-06-22T01:08:01.8594487Z             {
2026-06-22T01:08:01.8594648Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8594762Z               "line": 60
2026-06-22T01:08:01.8594863Z             },
2026-06-22T01:08:01.8594967Z             {
2026-06-22T01:08:01.8595131Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.8595239Z               "line": 480
2026-06-22T01:08:01.8595339Z             },
2026-06-22T01:08:01.8595450Z             {
2026-06-22T01:08:01.8595601Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8595717Z               "line": 254
2026-06-22T01:08:01.8595826Z             },
2026-06-22T01:08:01.8595930Z             {
2026-06-22T01:08:01.8596077Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8596195Z               "line": 384
2026-06-22T01:08:01.8596299Z             },
2026-06-22T01:08:01.8596399Z             {
2026-06-22T01:08:01.8596556Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8596675Z               "line": 418
2026-06-22T01:08:01.8596781Z             },
2026-06-22T01:08:01.8596881Z             {
2026-06-22T01:08:01.8597034Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T01:08:01.8597148Z               "line": 74
2026-06-22T01:08:01.8597252Z             },
2026-06-22T01:08:01.8597458Z             {
2026-06-22T01:08:01.8597605Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8597730Z               "line": 234
2026-06-22T01:08:01.8597829Z             },
2026-06-22T01:08:01.8597934Z             {
2026-06-22T01:08:01.8598092Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8598197Z               "line": 396
2026-06-22T01:08:01.8598308Z             },
2026-06-22T01:08:01.8598407Z             {
2026-06-22T01:08:01.8598548Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8598659Z               "line": 45
2026-06-22T01:08:01.8598757Z             },
2026-06-22T01:08:01.8599029Z             {
2026-06-22T01:08:01.8599180Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8599300Z               "line": 114
2026-06-22T01:08:01.8599400Z             },
2026-06-22T01:08:01.8599504Z             {
2026-06-22T01:08:01.8599644Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8599753Z               "line": 152
2026-06-22T01:08:01.8599862Z             },
2026-06-22T01:08:01.8599968Z             {
2026-06-22T01:08:01.8600115Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8600225Z               "line": 168
2026-06-22T01:08:01.8600325Z             },
2026-06-22T01:08:01.8600430Z             {
2026-06-22T01:08:01.8600574Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8600678Z               "line": 178
2026-06-22T01:08:01.8600768Z             },
2026-06-22T01:08:01.8600875Z             {
2026-06-22T01:08:01.8601021Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8601136Z               "line": 210
2026-06-22T01:08:01.8601237Z             },
2026-06-22T01:08:01.8601335Z             {
2026-06-22T01:08:01.8601482Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8601593Z               "line": 287
2026-06-22T01:08:01.8601697Z             },
2026-06-22T01:08:01.8601801Z             {
2026-06-22T01:08:01.8601945Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8602049Z               "line": 311
2026-06-22T01:08:01.8602156Z             },
2026-06-22T01:08:01.8602265Z             {
2026-06-22T01:08:01.8602412Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8602570Z               "line": 389
2026-06-22T01:08:01.8602670Z             },
2026-06-22T01:08:01.8602775Z             {
2026-06-22T01:08:01.8602922Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8603017Z               "line": 438
2026-06-22T01:08:01.8603128Z             },
2026-06-22T01:08:01.8603233Z             {
2026-06-22T01:08:01.8603395Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-22T01:08:01.8603505Z               "line": 37
2026-06-22T01:08:01.8603613Z             },
2026-06-22T01:08:01.8603722Z             {
2026-06-22T01:08:01.8603870Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8603987Z               "line": 62
2026-06-22T01:08:01.8604087Z             },
2026-06-22T01:08:01.8604189Z             {
2026-06-22T01:08:01.8604326Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8604441Z               "line": 279
2026-06-22T01:08:01.8604550Z             },
2026-06-22T01:08:01.8604655Z             {
2026-06-22T01:08:01.8604789Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8604893Z               "line": 1848
2026-06-22T01:08:01.8604998Z             }
2026-06-22T01:08:01.8605099Z           ]
2026-06-22T01:08:01.8605213Z         },
2026-06-22T01:08:01.8605322Z         "int": {
2026-06-22T01:08:01.8605428Z           "complete": false,
2026-06-22T01:08:01.8605546Z           "evidence": []
2026-06-22T01:08:01.8605647Z         },
2026-06-22T01:08:01.8605743Z         "unit": {
2026-06-22T01:08:01.8605861Z           "complete": true,
2026-06-22T01:08:01.8605967Z           "evidence": [
2026-06-22T01:08:01.8606176Z             {
2026-06-22T01:08:01.8606320Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.8606438Z               "line": 360
2026-06-22T01:08:01.8606542Z             },
2026-06-22T01:08:01.8606647Z             {
2026-06-22T01:08:01.8606792Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8606916Z               "line": 837
2026-06-22T01:08:01.8607022Z             },
2026-06-22T01:08:01.8607121Z             {
2026-06-22T01:08:01.8607269Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8607370Z               "line": 894
2026-06-22T01:08:01.8607479Z             },
2026-06-22T01:08:01.8607679Z             {
2026-06-22T01:08:01.8607827Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8607938Z               "line": 889
2026-06-22T01:08:01.8608042Z             },
2026-06-22T01:08:01.8608147Z             {
2026-06-22T01:08:01.8608291Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8608394Z               "line": 1014
2026-06-22T01:08:01.8608504Z             },
2026-06-22T01:08:01.8608601Z             {
2026-06-22T01:08:01.8608762Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8608868Z               "line": 1264
2026-06-22T01:08:01.8609090Z             },
2026-06-22T01:08:01.8609199Z             {
2026-06-22T01:08:01.8609354Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8609459Z               "line": 1405
2026-06-22T01:08:01.8609560Z             },
2026-06-22T01:08:01.8609669Z             {
2026-06-22T01:08:01.8609803Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8609918Z               "line": 449
2026-06-22T01:08:01.8610022Z             },
2026-06-22T01:08:01.8610122Z             {
2026-06-22T01:08:01.8610275Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8610384Z               "line": 485
2026-06-22T01:08:01.8610500Z             },
2026-06-22T01:08:01.8610594Z             {
2026-06-22T01:08:01.8610742Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8610852Z               "line": 540
2026-06-22T01:08:01.8610961Z             },
2026-06-22T01:08:01.8611061Z             {
2026-06-22T01:08:01.8611191Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8611310Z               "line": 697
2026-06-22T01:08:01.8611410Z             },
2026-06-22T01:08:01.8611515Z             {
2026-06-22T01:08:01.8611653Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8611769Z               "line": 931
2026-06-22T01:08:01.8611881Z             },
2026-06-22T01:08:01.8611980Z             {
2026-06-22T01:08:01.8612134Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8612234Z               "line": 945
2026-06-22T01:08:01.8612338Z             },
2026-06-22T01:08:01.8612439Z             {
2026-06-22T01:08:01.8612586Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8612711Z               "line": 1290
2026-06-22T01:08:01.8612806Z             },
2026-06-22T01:08:01.8612910Z             {
2026-06-22T01:08:01.8613045Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.8613173Z               "line": 609
2026-06-22T01:08:01.8613277Z             },
2026-06-22T01:08:01.8613383Z             {
2026-06-22T01:08:01.8613506Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8613616Z               "line": 8031
2026-06-22T01:08:01.8613722Z             }
2026-06-22T01:08:01.8613826Z           ]
2026-06-22T01:08:01.8613936Z         }
2026-06-22T01:08:01.8614047Z       }
2026-06-22T01:08:01.8614145Z     },
2026-06-22T01:08:01.8614249Z     {
2026-06-22T01:08:01.8614359Z       "id": "REQ-INST-4",
2026-06-22T01:08:01.8614571Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-22T01:08:01.8614686Z       "requiredStages": [
2026-06-22T01:08:01.8614786Z         "impl",
2026-06-22T01:08:01.8614996Z         "unit"
2026-06-22T01:08:01.8615096Z       ],
2026-06-22T01:08:01.8615210Z       "stages": {
2026-06-22T01:08:01.8615311Z         "doc": {
2026-06-22T01:08:01.8615430Z           "complete": false,
2026-06-22T01:08:01.8615539Z           "evidence": []
2026-06-22T01:08:01.8615640Z         },
2026-06-22T01:08:01.8615745Z         "impl": {
2026-06-22T01:08:01.8615859Z           "complete": true,
2026-06-22T01:08:01.8615964Z           "evidence": [
2026-06-22T01:08:01.8616064Z             {
2026-06-22T01:08:01.8616217Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8616327Z               "line": 385
2026-06-22T01:08:01.8616532Z             },
2026-06-22T01:08:01.8616637Z             {
2026-06-22T01:08:01.8616784Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8616899Z               "line": 202
2026-06-22T01:08:01.8617003Z             },
2026-06-22T01:08:01.8617107Z             {
2026-06-22T01:08:01.8617260Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8617376Z               "line": 234
2026-06-22T01:08:01.8617481Z             },
2026-06-22T01:08:01.8617573Z             {
2026-06-22T01:08:01.8617705Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8617815Z               "line": 274
2026-06-22T01:08:01.8617920Z             }
2026-06-22T01:08:01.8618020Z           ]
2026-06-22T01:08:01.8618130Z         },
2026-06-22T01:08:01.8618230Z         "int": {
2026-06-22T01:08:01.8618339Z           "complete": false,
2026-06-22T01:08:01.8618459Z           "evidence": []
2026-06-22T01:08:01.8618555Z         },
2026-06-22T01:08:01.8618664Z         "unit": {
2026-06-22T01:08:01.8618774Z           "complete": true,
2026-06-22T01:08:01.8618888Z           "evidence": [
2026-06-22T01:08:01.8619060Z             {
2026-06-22T01:08:01.8619208Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8619317Z               "line": 889
2026-06-22T01:08:01.8619414Z             },
2026-06-22T01:08:01.8619527Z             {
2026-06-22T01:08:01.8619664Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8619783Z               "line": 561
2026-06-22T01:08:01.8619891Z             },
2026-06-22T01:08:01.8619991Z             {
2026-06-22T01:08:01.8620139Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8620253Z               "line": 668
2026-06-22T01:08:01.8620358Z             },
2026-06-22T01:08:01.8620459Z             {
2026-06-22T01:08:01.8620606Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8620731Z               "line": 750
2026-06-22T01:08:01.8620830Z             }
2026-06-22T01:08:01.8620935Z           ]
2026-06-22T01:08:01.8621031Z         }
2026-06-22T01:08:01.8621140Z       }
2026-06-22T01:08:01.8621240Z     },
2026-06-22T01:08:01.8621345Z     {
2026-06-22T01:08:01.8621474Z       "id": "REQ-INST-5",
2026-06-22T01:08:01.8621665Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-22T01:08:01.8621788Z       "requiredStages": [
2026-06-22T01:08:01.8621893Z         "impl",
2026-06-22T01:08:01.8621995Z         "unit",
2026-06-22T01:08:01.8622098Z         "int"
2026-06-22T01:08:01.8622208Z       ],
2026-06-22T01:08:01.8622319Z       "stages": {
2026-06-22T01:08:01.8622423Z         "doc": {
2026-06-22T01:08:01.8622545Z           "complete": false,
2026-06-22T01:08:01.8622656Z           "evidence": []
2026-06-22T01:08:01.8622766Z         },
2026-06-22T01:08:01.8622869Z         "impl": {
2026-06-22T01:08:01.8626581Z           "complete": true,
2026-06-22T01:08:01.8626728Z           "evidence": [
2026-06-22T01:08:01.8626844Z             {
2026-06-22T01:08:01.8627005Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T01:08:01.8627117Z               "line": 85
2026-06-22T01:08:01.8627225Z             },
2026-06-22T01:08:01.8627330Z             {
2026-06-22T01:08:01.8627479Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8627734Z               "line": 68
2026-06-22T01:08:01.8627843Z             },
2026-06-22T01:08:01.8627951Z             {
2026-06-22T01:08:01.8628103Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8628209Z               "line": 99
2026-06-22T01:08:01.8628313Z             },
2026-06-22T01:08:01.8628414Z             {
2026-06-22T01:08:01.8628557Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8628656Z               "line": 183
2026-06-22T01:08:01.8628762Z             },
2026-06-22T01:08:01.8628858Z             {
2026-06-22T01:08:01.8629077Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8629286Z               "line": 314
2026-06-22T01:08:01.8629392Z             }
2026-06-22T01:08:01.8629500Z           ]
2026-06-22T01:08:01.8629596Z         },
2026-06-22T01:08:01.8629697Z         "int": {
2026-06-22T01:08:01.8629819Z           "complete": true,
2026-06-22T01:08:01.8629920Z           "evidence": [
2026-06-22T01:08:01.8630026Z             {
2026-06-22T01:08:01.8630191Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.8630310Z               "line": 156
2026-06-22T01:08:01.8630405Z             },
2026-06-22T01:08:01.8630503Z             {
2026-06-22T01:08:01.8630656Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:08:01.8630762Z               "line": 145
2026-06-22T01:08:01.8630865Z             },
2026-06-22T01:08:01.8630971Z             {
2026-06-22T01:08:01.8631123Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8631227Z               "line": 707
2026-06-22T01:08:01.8631334Z             },
2026-06-22T01:08:01.8631438Z             {
2026-06-22T01:08:01.8631586Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8631700Z               "line": 1069
2026-06-22T01:08:01.8631790Z             }
2026-06-22T01:08:01.8631891Z           ]
2026-06-22T01:08:01.8631987Z         },
2026-06-22T01:08:01.8632091Z         "unit": {
2026-06-22T01:08:01.8632211Z           "complete": true,
2026-06-22T01:08:01.8632320Z           "evidence": [
2026-06-22T01:08:01.8632420Z             {
2026-06-22T01:08:01.8632559Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8632691Z               "line": 552
2026-06-22T01:08:01.8632792Z             },
2026-06-22T01:08:01.8632903Z             {
2026-06-22T01:08:01.8633034Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8633148Z               "line": 595
2026-06-22T01:08:01.8633254Z             },
2026-06-22T01:08:01.8633354Z             {
2026-06-22T01:08:01.8633502Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:08:01.8633607Z               "line": 219
2026-06-22T01:08:01.8633711Z             }
2026-06-22T01:08:01.8633812Z           ]
2026-06-22T01:08:01.8633917Z         }
2026-06-22T01:08:01.8634016Z       }
2026-06-22T01:08:01.8634117Z     },
2026-06-22T01:08:01.8634222Z     {
2026-06-22T01:08:01.8634336Z       "id": "REQ-INST-6",
2026-06-22T01:08:01.8634551Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-22T01:08:01.8634660Z       "requiredStages": [
2026-06-22T01:08:01.8634775Z         "impl",
2026-06-22T01:08:01.8634885Z         "unit",
2026-06-22T01:08:01.8634979Z         "int"
2026-06-22T01:08:01.8635085Z       ],
2026-06-22T01:08:01.8635185Z       "stages": {
2026-06-22T01:08:01.8635299Z         "doc": {
2026-06-22T01:08:01.8635412Z           "complete": true,
2026-06-22T01:08:01.8635526Z           "evidence": [
2026-06-22T01:08:01.8635630Z             {
2026-06-22T01:08:01.8635763Z               "path": "docs/DEFERRED.md",
2026-06-22T01:08:01.8635888Z               "line": 13
2026-06-22T01:08:01.8635977Z             }
2026-06-22T01:08:01.8636088Z           ]
2026-06-22T01:08:01.8636188Z         },
2026-06-22T01:08:01.8636297Z         "impl": {
2026-06-22T01:08:01.8636413Z           "complete": true,
2026-06-22T01:08:01.8636536Z           "evidence": [
2026-06-22T01:08:01.8636770Z             {
2026-06-22T01:08:01.8636917Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.8637027Z               "line": 391
2026-06-22T01:08:01.8637122Z             },
2026-06-22T01:08:01.8637232Z             {
2026-06-22T01:08:01.8637381Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:08:01.8637499Z               "line": 27
2026-06-22T01:08:01.8637608Z             },
2026-06-22T01:08:01.8637710Z             {
2026-06-22T01:08:01.8637866Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:08:01.8637972Z               "line": 73
2026-06-22T01:08:01.8638072Z             },
2026-06-22T01:08:01.8638260Z             {
2026-06-22T01:08:01.8638394Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T01:08:01.8638502Z               "line": 182
2026-06-22T01:08:01.8638601Z             },
2026-06-22T01:08:01.8638703Z             {
2026-06-22T01:08:01.8638840Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8639032Z               "line": 426
2026-06-22T01:08:01.8639131Z             },
2026-06-22T01:08:01.8639231Z             {
2026-06-22T01:08:01.8639375Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T01:08:01.8639484Z               "line": 31
2026-06-22T01:08:01.8639589Z             },
2026-06-22T01:08:01.8639689Z             {
2026-06-22T01:08:01.8639831Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.8639933Z               "line": 202
2026-06-22T01:08:01.8640028Z             },
2026-06-22T01:08:01.8640132Z             {
2026-06-22T01:08:01.8640271Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.8640389Z               "line": 83
2026-06-22T01:08:01.8640490Z             },
2026-06-22T01:08:01.8640601Z             {
2026-06-22T01:08:01.8640732Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8640841Z               "line": 1849
2026-06-22T01:08:01.8640951Z             },
2026-06-22T01:08:01.8641049Z             {
2026-06-22T01:08:01.8641178Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.8641293Z               "line": 179
2026-06-22T01:08:01.8641392Z             },
2026-06-22T01:08:01.8641497Z             {
2026-06-22T01:08:01.8641626Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.8641735Z               "line": 215
2026-06-22T01:08:01.8641832Z             }
2026-06-22T01:08:01.8641941Z           ]
2026-06-22T01:08:01.8642036Z         },
2026-06-22T01:08:01.8642142Z         "int": {
2026-06-22T01:08:01.8642270Z           "complete": true,
2026-06-22T01:08:01.8642379Z           "evidence": [
2026-06-22T01:08:01.8642485Z             {
2026-06-22T01:08:01.8642638Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8642751Z               "line": 721
2026-06-22T01:08:01.8642843Z             },
2026-06-22T01:08:01.8642946Z             {
2026-06-22T01:08:01.8643101Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8643210Z               "line": 1114
2026-06-22T01:08:01.8643323Z             },
2026-06-22T01:08:01.8643529Z             {
2026-06-22T01:08:01.8643671Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.8643781Z               "line": 726
2026-06-22T01:08:01.8643886Z             }
2026-06-22T01:08:01.8643990Z           ]
2026-06-22T01:08:01.8644095Z         },
2026-06-22T01:08:01.8644201Z         "unit": {
2026-06-22T01:08:01.8644309Z           "complete": true,
2026-06-22T01:08:01.8644420Z           "evidence": [
2026-06-22T01:08:01.8644520Z             {
2026-06-22T01:08:01.8644667Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.8644778Z               "line": 661
2026-06-22T01:08:01.8644882Z             },
2026-06-22T01:08:01.8644986Z             {
2026-06-22T01:08:01.8645135Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.8645249Z               "line": 899
2026-06-22T01:08:01.8645345Z             },
2026-06-22T01:08:01.8645559Z             {
2026-06-22T01:08:01.8645704Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T01:08:01.8645811Z               "line": 66
2026-06-22T01:08:01.8645915Z             },
2026-06-22T01:08:01.8646016Z             {
2026-06-22T01:08:01.8646161Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.8646275Z               "line": 297
2026-06-22T01:08:01.8646386Z             },
2026-06-22T01:08:01.8646490Z             {
2026-06-22T01:08:01.8646790Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.8646909Z               "line": 203
2026-06-22T01:08:01.8647010Z             }
2026-06-22T01:08:01.8647214Z           ]
2026-06-22T01:08:01.8647321Z         }
2026-06-22T01:08:01.8647425Z       }
2026-06-22T01:08:01.8647520Z     },
2026-06-22T01:08:01.8647617Z     {
2026-06-22T01:08:01.8647735Z       "id": "REQ-INST-7",
2026-06-22T01:08:01.8647902Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-22T01:08:01.8648030Z       "requiredStages": [
2026-06-22T01:08:01.8648135Z         "impl",
2026-06-22T01:08:01.8648237Z         "unit",
2026-06-22T01:08:01.8648345Z         "int"
2026-06-22T01:08:01.8648441Z       ],
2026-06-22T01:08:01.8648541Z       "stages": {
2026-06-22T01:08:01.8648641Z         "doc": {
2026-06-22T01:08:01.8648768Z           "complete": false,
2026-06-22T01:08:01.8648873Z           "evidence": []
2026-06-22T01:08:01.8649048Z         },
2026-06-22T01:08:01.8649152Z         "impl": {
2026-06-22T01:08:01.8649258Z           "complete": true,
2026-06-22T01:08:01.8649367Z           "evidence": [
2026-06-22T01:08:01.8649472Z             {
2026-06-22T01:08:01.8649620Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.8649724Z               "line": 436
2026-06-22T01:08:01.8649825Z             },
2026-06-22T01:08:01.8649930Z             {
2026-06-22T01:08:01.8650091Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8650207Z               "line": 27
2026-06-22T01:08:01.8650301Z             },
2026-06-22T01:08:01.8650411Z             {
2026-06-22T01:08:01.8650574Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8650678Z               "line": 207
2026-06-22T01:08:01.8650784Z             },
2026-06-22T01:08:01.8650884Z             {
2026-06-22T01:08:01.8651040Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8651142Z               "line": 344
2026-06-22T01:08:01.8651241Z             },
2026-06-22T01:08:01.8651335Z             {
2026-06-22T01:08:01.8651483Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-22T01:08:01.8651595Z               "line": 59
2026-06-22T01:08:01.8651700Z             },
2026-06-22T01:08:01.8651810Z             {
2026-06-22T01:08:01.8651948Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8652057Z               "line": 41
2026-06-22T01:08:01.8652163Z             },
2026-06-22T01:08:01.8652263Z             {
2026-06-22T01:08:01.8652411Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8652515Z               "line": 27
2026-06-22T01:08:01.8652619Z             },
2026-06-22T01:08:01.8652726Z             {
2026-06-22T01:08:01.8652883Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8652988Z               "line": 119
2026-06-22T01:08:01.8653093Z             },
2026-06-22T01:08:01.8653198Z             {
2026-06-22T01:08:01.8653346Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8653455Z               "line": 134
2026-06-22T01:08:01.8653555Z             },
2026-06-22T01:08:01.8653656Z             {
2026-06-22T01:08:01.8653807Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T01:08:01.8653912Z               "line": 139
2026-06-22T01:08:01.8654014Z             }
2026-06-22T01:08:01.8654113Z           ]
2026-06-22T01:08:01.8654221Z         },
2026-06-22T01:08:01.8654326Z         "int": {
2026-06-22T01:08:01.8654540Z           "complete": true,
2026-06-22T01:08:01.8654646Z           "evidence": [
2026-06-22T01:08:01.8654746Z             {
2026-06-22T01:08:01.8654889Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:08:01.8655000Z               "line": 145
2026-06-22T01:08:01.8655109Z             },
2026-06-22T01:08:01.8655213Z             {
2026-06-22T01:08:01.8655366Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8655484Z               "line": 665
2026-06-22T01:08:01.8655586Z             },
2026-06-22T01:08:01.8655690Z             {
2026-06-22T01:08:01.8655838Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8656052Z               "line": 964
2026-06-22T01:08:01.8656157Z             }
2026-06-22T01:08:01.8656259Z           ]
2026-06-22T01:08:01.8656367Z         },
2026-06-22T01:08:01.8656471Z         "unit": {
2026-06-22T01:08:01.8656595Z           "complete": true,
2026-06-22T01:08:01.8656707Z           "evidence": [
2026-06-22T01:08:01.8656821Z             {
2026-06-22T01:08:01.8656975Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8657098Z               "line": 1134
2026-06-22T01:08:01.8657203Z             },
2026-06-22T01:08:01.8657308Z             {
2026-06-22T01:08:01.8657464Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8657575Z               "line": 1521
2026-06-22T01:08:01.8657684Z             },
2026-06-22T01:08:01.8657784Z             {
2026-06-22T01:08:01.8657942Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T01:08:01.8658056Z               "line": 84
2026-06-22T01:08:01.8658157Z             },
2026-06-22T01:08:01.8658256Z             {
2026-06-22T01:08:01.8658395Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8658501Z               "line": 812
2026-06-22T01:08:01.8658609Z             },
2026-06-22T01:08:01.8658710Z             {
2026-06-22T01:08:01.8658854Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8659034Z               "line": 823
2026-06-22T01:08:01.8659140Z             },
2026-06-22T01:08:01.8659234Z             {
2026-06-22T01:08:01.8659380Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8659495Z               "line": 838
2026-06-22T01:08:01.8659593Z             },
2026-06-22T01:08:01.8659702Z             {
2026-06-22T01:08:01.8659852Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8659960Z               "line": 166
2026-06-22T01:08:01.8660065Z             },
2026-06-22T01:08:01.8660171Z             {
2026-06-22T01:08:01.8660322Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8660438Z               "line": 181
2026-06-22T01:08:01.8660543Z             },
2026-06-22T01:08:01.8660637Z             {
2026-06-22T01:08:01.8660791Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.8660895Z               "line": 214
2026-06-22T01:08:01.8660995Z             }
2026-06-22T01:08:01.8661100Z           ]
2026-06-22T01:08:01.8661204Z         }
2026-06-22T01:08:01.8661305Z       }
2026-06-22T01:08:01.8661406Z     },
2026-06-22T01:08:01.8661510Z     {
2026-06-22T01:08:01.8661615Z       "id": "REQ-INST-8",
2026-06-22T01:08:01.8661796Z       "title": "Remote-control mode distinct from local operation",
2026-06-22T01:08:01.8661914Z       "requiredStages": [
2026-06-22T01:08:01.8662015Z         "impl",
2026-06-22T01:08:01.8662118Z         "unit",
2026-06-22T01:08:01.8662217Z         "int"
2026-06-22T01:08:01.8662322Z       ],
2026-06-22T01:08:01.8662428Z       "stages": {
2026-06-22T01:08:01.8662545Z         "doc": {
2026-06-22T01:08:01.8662661Z           "complete": false,
2026-06-22T01:08:01.8662766Z           "evidence": []
2026-06-22T01:08:01.8662870Z         },
2026-06-22T01:08:01.8662972Z         "impl": {
2026-06-22T01:08:01.8663100Z           "complete": true,
2026-06-22T01:08:01.8663203Z           "evidence": [
2026-06-22T01:08:01.8663405Z             {
2026-06-22T01:08:01.8663557Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8663663Z               "line": 202
2026-06-22T01:08:01.8663772Z             },
2026-06-22T01:08:01.8663867Z             {
2026-06-22T01:08:01.8664020Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8664129Z               "line": 525
2026-06-22T01:08:01.8664240Z             },
2026-06-22T01:08:01.8664344Z             {
2026-06-22T01:08:01.8664487Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.8664593Z               "line": 565
2026-06-22T01:08:01.8664696Z             },
2026-06-22T01:08:01.8664901Z             {
2026-06-22T01:08:01.8665044Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.8665153Z               "line": 62
2026-06-22T01:08:01.8665274Z             }
2026-06-22T01:08:01.8665382Z           ]
2026-06-22T01:08:01.8665487Z         },
2026-06-22T01:08:01.8665593Z         "int": {
2026-06-22T01:08:01.8665716Z           "complete": true,
2026-06-22T01:08:01.8665821Z           "evidence": [
2026-06-22T01:08:01.8665931Z             {
2026-06-22T01:08:01.8666093Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.8666199Z               "line": 415
2026-06-22T01:08:01.8666307Z             },
2026-06-22T01:08:01.8666412Z             {
2026-06-22T01:08:01.8666561Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.8666675Z               "line": 1028
2026-06-22T01:08:01.8666785Z             }
2026-06-22T01:08:01.8666890Z           ]
2026-06-22T01:08:01.8666993Z         },
2026-06-22T01:08:01.8667103Z         "unit": {
2026-06-22T01:08:01.8667221Z           "complete": true,
2026-06-22T01:08:01.8667334Z           "evidence": [
2026-06-22T01:08:01.8667430Z             {
2026-06-22T01:08:01.8667582Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8667691Z               "line": 369
2026-06-22T01:08:01.8667792Z             },
2026-06-22T01:08:01.8667893Z             {
2026-06-22T01:08:01.8668029Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8668131Z               "line": 636
2026-06-22T01:08:01.8668236Z             },
2026-06-22T01:08:01.8668340Z             {
2026-06-22T01:08:01.8668488Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.8668592Z               "line": 116
2026-06-22T01:08:01.8668698Z             },
2026-06-22T01:08:01.8668794Z             {
2026-06-22T01:08:01.8668931Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.8669132Z               "line": 160
2026-06-22T01:08:01.8669236Z             }
2026-06-22T01:08:01.8669343Z           ]
2026-06-22T01:08:01.8669447Z         }
2026-06-22T01:08:01.8669551Z       }
2026-06-22T01:08:01.8669653Z     },
2026-06-22T01:08:01.8669757Z     {
2026-06-22T01:08:01.8669860Z       "id": "REQ-INST-9",
2026-06-22T01:08:01.8670079Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-22T01:08:01.8670201Z       "requiredStages": [
2026-06-22T01:08:01.8670301Z         "impl",
2026-06-22T01:08:01.8670412Z         "unit"
2026-06-22T01:08:01.8670511Z       ],
2026-06-22T01:08:01.8670616Z       "stages": {
2026-06-22T01:08:01.8670717Z         "doc": {
2026-06-22T01:08:01.8670835Z           "complete": false,
2026-06-22T01:08:01.8670950Z           "evidence": []
2026-06-22T01:08:01.8671050Z         },
2026-06-22T01:08:01.8671149Z         "impl": {
2026-06-22T01:08:01.8671260Z           "complete": true,
2026-06-22T01:08:01.8671369Z           "evidence": [
2026-06-22T01:08:01.8671474Z             {
2026-06-22T01:08:01.8671623Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8671741Z               "line": 449
2026-06-22T01:08:01.8671841Z             }
2026-06-22T01:08:01.8671948Z           ]
2026-06-22T01:08:01.8672051Z         },
2026-06-22T01:08:01.8672161Z         "int": {
2026-06-22T01:08:01.8672281Z           "complete": false,
2026-06-22T01:08:01.8672512Z           "evidence": []
2026-06-22T01:08:01.8672622Z         },
2026-06-22T01:08:01.8672730Z         "unit": {
2026-06-22T01:08:01.8672849Z           "complete": true,
2026-06-22T01:08:01.8672959Z           "evidence": [
2026-06-22T01:08:01.8673068Z             {
2026-06-22T01:08:01.8673222Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8673326Z               "line": 1397
2026-06-22T01:08:01.8673430Z             },
2026-06-22T01:08:01.8673532Z             {
2026-06-22T01:08:01.8673679Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8673788Z               "line": 1406
2026-06-22T01:08:01.8673993Z             },
2026-06-22T01:08:01.8674103Z             {
2026-06-22T01:08:01.8674246Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8674365Z               "line": 1422
2026-06-22T01:08:01.8674461Z             },
2026-06-22T01:08:01.8674570Z             {
2026-06-22T01:08:01.8674713Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8674834Z               "line": 1434
2026-06-22T01:08:01.8674942Z             },
2026-06-22T01:08:01.8675042Z             {
2026-06-22T01:08:01.8675200Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.8675313Z               "line": 1454
2026-06-22T01:08:01.8675413Z             }
2026-06-22T01:08:01.8675519Z           ]
2026-06-22T01:08:01.8675619Z         }
2026-06-22T01:08:01.8675723Z       }
2026-06-22T01:08:01.8675815Z     },
2026-06-22T01:08:01.8675910Z     {
2026-06-22T01:08:01.8676033Z       "id": "REQ-INSTALL-1",
2026-06-22T01:08:01.8676257Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-22T01:08:01.8676381Z       "requiredStages": [
2026-06-22T01:08:01.8676515Z         "doc",
2026-06-22T01:08:01.8676653Z         "impl",
2026-06-22T01:08:01.8676759Z         "int"
2026-06-22T01:08:01.8676862Z       ],
2026-06-22T01:08:01.8676972Z       "stages": {
2026-06-22T01:08:01.8677083Z         "doc": {
2026-06-22T01:08:01.8677200Z           "complete": true,
2026-06-22T01:08:01.8677302Z           "evidence": [
2026-06-22T01:08:01.8677398Z             {
2026-06-22T01:08:01.8677515Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8677624Z               "line": 754
2026-06-22T01:08:01.8677725Z             }
2026-06-22T01:08:01.8677837Z           ]
2026-06-22T01:08:01.8677932Z         },
2026-06-22T01:08:01.8678037Z         "impl": {
2026-06-22T01:08:01.8678147Z           "complete": true,
2026-06-22T01:08:01.8678266Z           "evidence": [
2026-06-22T01:08:01.8678391Z             {
2026-06-22T01:08:01.8678523Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8678639Z               "line": 57
2026-06-22T01:08:01.8678743Z             },
2026-06-22T01:08:01.8678852Z             {
2026-06-22T01:08:01.8679067Z               "path": "installer/install.sh",
2026-06-22T01:08:01.8679181Z               "line": 52
2026-06-22T01:08:01.8679287Z             }
2026-06-22T01:08:01.8679391Z           ]
2026-06-22T01:08:01.8679491Z         },
2026-06-22T01:08:01.8679597Z         "int": {
2026-06-22T01:08:01.8679725Z           "complete": true,
2026-06-22T01:08:01.8679834Z           "evidence": [
2026-06-22T01:08:01.8679941Z             {
2026-06-22T01:08:01.8680102Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:08:01.8680208Z               "line": 21
2026-06-22T01:08:01.8680318Z             }
2026-06-22T01:08:01.8680420Z           ]
2026-06-22T01:08:01.8680520Z         },
2026-06-22T01:08:01.8680625Z         "unit": {
2026-06-22T01:08:01.8680737Z           "complete": false,
2026-06-22T01:08:01.8680871Z           "evidence": []
2026-06-22T01:08:01.8680976Z         }
2026-06-22T01:08:01.8681075Z       }
2026-06-22T01:08:01.8681176Z     },
2026-06-22T01:08:01.8681272Z     {
2026-06-22T01:08:01.8681400Z       "id": "REQ-INSTALL-10",
2026-06-22T01:08:01.8682879Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-22T01:08:01.8683101Z       "requiredStages": [
2026-06-22T01:08:01.8683210Z         "impl",
2026-06-22T01:08:01.8683323Z         "unit"
2026-06-22T01:08:01.8683428Z       ],
2026-06-22T01:08:01.8683534Z       "stages": {
2026-06-22T01:08:01.8683647Z         "doc": {
2026-06-22T01:08:01.8683752Z           "complete": false,
2026-06-22T01:08:01.8684009Z           "evidence": []
2026-06-22T01:08:01.8684116Z         },
2026-06-22T01:08:01.8684229Z         "impl": {
2026-06-22T01:08:01.8684353Z           "complete": true,
2026-06-22T01:08:01.8684463Z           "evidence": [
2026-06-22T01:08:01.8684577Z             {
2026-06-22T01:08:01.8684716Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8684830Z               "line": 191
2026-06-22T01:08:01.8684935Z             }
2026-06-22T01:08:01.8685046Z           ]
2026-06-22T01:08:01.8685144Z         },
2026-06-22T01:08:01.8685249Z         "int": {
2026-06-22T01:08:01.8685375Z           "complete": false,
2026-06-22T01:08:01.8685487Z           "evidence": []
2026-06-22T01:08:01.8685588Z         },
2026-06-22T01:08:01.8685690Z         "unit": {
2026-06-22T01:08:01.8685802Z           "complete": true,
2026-06-22T01:08:01.8685920Z           "evidence": [
2026-06-22T01:08:01.8686026Z             {
2026-06-22T01:08:01.8686183Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:08:01.8686307Z               "line": 211
2026-06-22T01:08:01.8686413Z             }
2026-06-22T01:08:01.8686522Z           ]
2026-06-22T01:08:01.8686622Z         }
2026-06-22T01:08:01.8686732Z       }
2026-06-22T01:08:01.8686831Z     },
2026-06-22T01:08:01.8686937Z     {
2026-06-22T01:08:01.8687066Z       "id": "REQ-INSTALL-11",
2026-06-22T01:08:01.8688879Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-22T01:08:01.8689093Z       "requiredStages": [
2026-06-22T01:08:01.8689204Z         "doc",
2026-06-22T01:08:01.8689342Z         "impl",
2026-06-22T01:08:01.8689455Z         "unit"
2026-06-22T01:08:01.8689547Z       ],
2026-06-22T01:08:01.8689675Z       "stages": {
2026-06-22T01:08:01.8689780Z         "doc": {
2026-06-22T01:08:01.8689900Z           "complete": true,
2026-06-22T01:08:01.8690023Z           "evidence": [
2026-06-22T01:08:01.8690119Z             {
2026-06-22T01:08:01.8690238Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8690338Z               "line": 138
2026-06-22T01:08:01.8690443Z             },
2026-06-22T01:08:01.8690549Z             {
2026-06-22T01:08:01.8690677Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.8690792Z               "line": 82
2026-06-22T01:08:01.8690896Z             }
2026-06-22T01:08:01.8690995Z           ]
2026-06-22T01:08:01.8691095Z         },
2026-06-22T01:08:01.8691209Z         "impl": {
2026-06-22T01:08:01.8691321Z           "complete": true,
2026-06-22T01:08:01.8691427Z           "evidence": [
2026-06-22T01:08:01.8691536Z             {
2026-06-22T01:08:01.8691683Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.8691804Z               "line": 223
2026-06-22T01:08:01.8691904Z             },
2026-06-22T01:08:01.8692012Z             {
2026-06-22T01:08:01.8692265Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8692385Z               "line": 99
2026-06-22T01:08:01.8692490Z             },
2026-06-22T01:08:01.8692594Z             {
2026-06-22T01:08:01.8692739Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.8692847Z               "line": 117
2026-06-22T01:08:01.8692952Z             },
2026-06-22T01:08:01.8693058Z             {
2026-06-22T01:08:01.8693209Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T01:08:01.8693320Z               "line": 332
2026-06-22T01:08:01.8693421Z             },
2026-06-22T01:08:01.8693524Z             {
2026-06-22T01:08:01.8693766Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.8693883Z               "line": 88
2026-06-22T01:08:01.8693984Z             },
2026-06-22T01:08:01.8694094Z             {
2026-06-22T01:08:01.8694241Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.8694352Z               "line": 104
2026-06-22T01:08:01.8694461Z             },
2026-06-22T01:08:01.8694570Z             {
2026-06-22T01:08:01.8694713Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8694822Z               "line": 297
2026-06-22T01:08:01.8694923Z             },
2026-06-22T01:08:01.8695028Z             {
2026-06-22T01:08:01.8695175Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8695291Z               "line": 332
2026-06-22T01:08:01.8695395Z             },
2026-06-22T01:08:01.8695495Z             {
2026-06-22T01:08:01.8695639Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8695742Z               "line": 523
2026-06-22T01:08:01.8695857Z             },
2026-06-22T01:08:01.8695954Z             {
2026-06-22T01:08:01.8696105Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8696207Z               "line": 546
2026-06-22T01:08:01.8696316Z             },
2026-06-22T01:08:01.8696419Z             {
2026-06-22T01:08:01.8696562Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8696682Z               "line": 561
2026-06-22T01:08:01.8696786Z             },
2026-06-22T01:08:01.8696891Z             {
2026-06-22T01:08:01.8697030Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.8697148Z               "line": 492
2026-06-22T01:08:01.8697254Z             }
2026-06-22T01:08:01.8697354Z           ]
2026-06-22T01:08:01.8697458Z         },
2026-06-22T01:08:01.8697560Z         "int": {
2026-06-22T01:08:01.8697673Z           "complete": false,
2026-06-22T01:08:01.8697787Z           "evidence": []
2026-06-22T01:08:01.8697893Z         },
2026-06-22T01:08:01.8698002Z         "unit": {
2026-06-22T01:08:01.8698112Z           "complete": true,
2026-06-22T01:08:01.8698227Z           "evidence": [
2026-06-22T01:08:01.8698326Z             {
2026-06-22T01:08:01.8698480Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8698588Z               "line": 799
2026-06-22T01:08:01.8698702Z             },
2026-06-22T01:08:01.8698807Z             {
2026-06-22T01:08:01.8699024Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8699144Z               "line": 811
2026-06-22T01:08:01.8699254Z             },
2026-06-22T01:08:01.8699357Z             {
2026-06-22T01:08:01.8699502Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.8699611Z               "line": 820
2026-06-22T01:08:01.8699715Z             }
2026-06-22T01:08:01.8699816Z           ]
2026-06-22T01:08:01.8699925Z         }
2026-06-22T01:08:01.8700020Z       }
2026-06-22T01:08:01.8700126Z     },
2026-06-22T01:08:01.8700221Z     {
2026-06-22T01:08:01.8700350Z       "id": "REQ-INSTALL-12",
2026-06-22T01:08:01.8702979Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-22T01:08:01.8703222Z       "requiredStages": [
2026-06-22T01:08:01.8703488Z         "doc",
2026-06-22T01:08:01.8703599Z         "impl",
2026-06-22T01:08:01.8703699Z         "unit",
2026-06-22T01:08:01.8703803Z         "int"
2026-06-22T01:08:01.8703905Z       ],
2026-06-22T01:08:01.8704009Z       "stages": {
2026-06-22T01:08:01.8704122Z         "doc": {
2026-06-22T01:08:01.8704260Z           "complete": true,
2026-06-22T01:08:01.8704368Z           "evidence": [
2026-06-22T01:08:01.8704472Z             {
2026-06-22T01:08:01.8704601Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8704711Z               "line": 185
2026-06-22T01:08:01.8704820Z             }
2026-06-22T01:08:01.8704921Z           ]
2026-06-22T01:08:01.8705012Z         },
2026-06-22T01:08:01.8705120Z         "impl": {
2026-06-22T01:08:01.8705236Z           "complete": true,
2026-06-22T01:08:01.8705341Z           "evidence": [
2026-06-22T01:08:01.8705444Z             {
2026-06-22T01:08:01.8705603Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8705725Z               "line": 27
2026-06-22T01:08:01.8705827Z             },
2026-06-22T01:08:01.8705932Z             {
2026-06-22T01:08:01.8706079Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8706199Z               "line": 223
2026-06-22T01:08:01.8706293Z             },
2026-06-22T01:08:01.8706399Z             {
2026-06-22T01:08:01.8706543Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8706661Z               "line": 5677
2026-06-22T01:08:01.8706767Z             }
2026-06-22T01:08:01.8706867Z           ]
2026-06-22T01:08:01.8706974Z         },
2026-06-22T01:08:01.8707079Z         "int": {
2026-06-22T01:08:01.8707194Z           "complete": true,
2026-06-22T01:08:01.8707313Z           "evidence": [
2026-06-22T01:08:01.8707418Z             {
2026-06-22T01:08:01.8707576Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T01:08:01.8707670Z               "line": 19
2026-06-22T01:08:01.8707777Z             }
2026-06-22T01:08:01.8707876Z           ]
2026-06-22T01:08:01.8707975Z         },
2026-06-22T01:08:01.8708081Z         "unit": {
2026-06-22T01:08:01.8708195Z           "complete": true,
2026-06-22T01:08:01.8708309Z           "evidence": [
2026-06-22T01:08:01.8708406Z             {
2026-06-22T01:08:01.8712770Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8712929Z               "line": 395
2026-06-22T01:08:01.8713033Z             },
2026-06-22T01:08:01.8713142Z             {
2026-06-22T01:08:01.8713310Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8713414Z               "line": 421
2026-06-22T01:08:01.8713520Z             },
2026-06-22T01:08:01.8713624Z             {
2026-06-22T01:08:01.8713786Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8713892Z               "line": 440
2026-06-22T01:08:01.8713996Z             },
2026-06-22T01:08:01.8714101Z             {
2026-06-22T01:08:01.8714245Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8714368Z               "line": 475
2026-06-22T01:08:01.8714470Z             },
2026-06-22T01:08:01.8714574Z             {
2026-06-22T01:08:01.8714720Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8714834Z               "line": 8665
2026-06-22T01:08:01.8714942Z             }
2026-06-22T01:08:01.8715191Z           ]
2026-06-22T01:08:01.8715290Z         }
2026-06-22T01:08:01.8715390Z       }
2026-06-22T01:08:01.8715496Z     },
2026-06-22T01:08:01.8715591Z     {
2026-06-22T01:08:01.8715709Z       "id": "REQ-INSTALL-2",
2026-06-22T01:08:01.8715871Z       "title": "Marketplace-repackaging-friendly install",
2026-06-22T01:08:01.8715976Z       "requiredStages": [
2026-06-22T01:08:01.8716087Z         "doc"
2026-06-22T01:08:01.8716191Z       ],
2026-06-22T01:08:01.8716300Z       "stages": {
2026-06-22T01:08:01.8716406Z         "doc": {
2026-06-22T01:08:01.8716529Z           "complete": true,
2026-06-22T01:08:01.8716639Z           "evidence": [
2026-06-22T01:08:01.8716840Z             {
2026-06-22T01:08:01.8716968Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8717074Z               "line": 755
2026-06-22T01:08:01.8717182Z             }
2026-06-22T01:08:01.8717283Z           ]
2026-06-22T01:08:01.8717389Z         },
2026-06-22T01:08:01.8717502Z         "impl": {
2026-06-22T01:08:01.8717620Z           "complete": false,
2026-06-22T01:08:01.8717736Z           "evidence": []
2026-06-22T01:08:01.8717835Z         },
2026-06-22T01:08:01.8717944Z         "int": {
2026-06-22T01:08:01.8718060Z           "complete": false,
2026-06-22T01:08:01.8718173Z           "evidence": []
2026-06-22T01:08:01.8718283Z         },
2026-06-22T01:08:01.8718389Z         "unit": {
2026-06-22T01:08:01.8718516Z           "complete": false,
2026-06-22T01:08:01.8718627Z           "evidence": []
2026-06-22T01:08:01.8718732Z         }
2026-06-22T01:08:01.8718831Z       }
2026-06-22T01:08:01.8718937Z     },
2026-06-22T01:08:01.8719142Z     {
2026-06-22T01:08:01.8719267Z       "id": "REQ-INSTALL-3",
2026-06-22T01:08:01.8719446Z       "title": "Idempotent + interactive-optional first run",
2026-06-22T01:08:01.8719566Z       "requiredStages": [
2026-06-22T01:08:01.8719676Z         "impl",
2026-06-22T01:08:01.8719780Z         "int"
2026-06-22T01:08:01.8719889Z       ],
2026-06-22T01:08:01.8719994Z       "stages": {
2026-06-22T01:08:01.8720101Z         "doc": {
2026-06-22T01:08:01.8720221Z           "complete": false,
2026-06-22T01:08:01.8720336Z           "evidence": []
2026-06-22T01:08:01.8720444Z         },
2026-06-22T01:08:01.8720550Z         "impl": {
2026-06-22T01:08:01.8720679Z           "complete": true,
2026-06-22T01:08:01.8720788Z           "evidence": [
2026-06-22T01:08:01.8720889Z             {
2026-06-22T01:08:01.8721031Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8721145Z               "line": 100
2026-06-22T01:08:01.8721261Z             },
2026-06-22T01:08:01.8721365Z             {
2026-06-22T01:08:01.8721508Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8721632Z               "line": 111
2026-06-22T01:08:01.8721737Z             },
2026-06-22T01:08:01.8721843Z             {
2026-06-22T01:08:01.8721975Z               "path": "installer/install.sh",
2026-06-22T01:08:01.8722090Z               "line": 79
2026-06-22T01:08:01.8722196Z             }
2026-06-22T01:08:01.8722304Z           ]
2026-06-22T01:08:01.8722414Z         },
2026-06-22T01:08:01.8722516Z         "int": {
2026-06-22T01:08:01.8722633Z           "complete": true,
2026-06-22T01:08:01.8722746Z           "evidence": [
2026-06-22T01:08:01.8722856Z             {
2026-06-22T01:08:01.8723002Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:08:01.8723111Z               "line": 167
2026-06-22T01:08:01.8723217Z             }
2026-06-22T01:08:01.8723321Z           ]
2026-06-22T01:08:01.8723431Z         },
2026-06-22T01:08:01.8723541Z         "unit": {
2026-06-22T01:08:01.8723660Z           "complete": false,
2026-06-22T01:08:01.8723766Z           "evidence": []
2026-06-22T01:08:01.8723880Z         }
2026-06-22T01:08:01.8723974Z       }
2026-06-22T01:08:01.8724075Z     },
2026-06-22T01:08:01.8724180Z     {
2026-06-22T01:08:01.8724289Z       "id": "REQ-INSTALL-4",
2026-06-22T01:08:01.8724952Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-22T01:08:01.8725190Z       "requiredStages": [
2026-06-22T01:08:01.8725294Z         "impl",
2026-06-22T01:08:01.8725399Z         "unit"
2026-06-22T01:08:01.8725502Z       ],
2026-06-22T01:08:01.8725606Z       "stages": {
2026-06-22T01:08:01.8725712Z         "doc": {
2026-06-22T01:08:01.8725831Z           "complete": false,
2026-06-22T01:08:01.8725935Z           "evidence": []
2026-06-22T01:08:01.8726037Z         },
2026-06-22T01:08:01.8726146Z         "impl": {
2026-06-22T01:08:01.8726265Z           "complete": true,
2026-06-22T01:08:01.8726375Z           "evidence": [
2026-06-22T01:08:01.8726574Z             {
2026-06-22T01:08:01.8726747Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.8726865Z               "line": 165
2026-06-22T01:08:01.8726967Z             },
2026-06-22T01:08:01.8727071Z             {
2026-06-22T01:08:01.8727223Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8727339Z               "line": 29
2026-06-22T01:08:01.8727437Z             },
2026-06-22T01:08:01.8727543Z             {
2026-06-22T01:08:01.8727696Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8727801Z               "line": 288
2026-06-22T01:08:01.8727906Z             },
2026-06-22T01:08:01.8728006Z             {
2026-06-22T01:08:01.8728156Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8728266Z               "line": 356
2026-06-22T01:08:01.8728372Z             },
2026-06-22T01:08:01.8728481Z             {
2026-06-22T01:08:01.8728625Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8728748Z               "line": 386
2026-06-22T01:08:01.8728838Z             },
2026-06-22T01:08:01.8729030Z             {
2026-06-22T01:08:01.8729172Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8729297Z               "line": 434
2026-06-22T01:08:01.8729415Z             },
2026-06-22T01:08:01.8729536Z             {
2026-06-22T01:08:01.8729678Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8729792Z               "line": 5396
2026-06-22T01:08:01.8729894Z             }
2026-06-22T01:08:01.8729992Z           ]
2026-06-22T01:08:01.8730103Z         },
2026-06-22T01:08:01.8730209Z         "int": {
2026-06-22T01:08:01.8730326Z           "complete": false,
2026-06-22T01:08:01.8730429Z           "evidence": []
2026-06-22T01:08:01.8730530Z         },
2026-06-22T01:08:01.8730638Z         "unit": {
2026-06-22T01:08:01.8730742Z           "complete": true,
2026-06-22T01:08:01.8730858Z           "evidence": [
2026-06-22T01:08:01.8730971Z             {
2026-06-22T01:08:01.8731129Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.8731239Z               "line": 375
2026-06-22T01:08:01.8731338Z             },
2026-06-22T01:08:01.8731444Z             {
2026-06-22T01:08:01.8731592Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8731710Z               "line": 808
2026-06-22T01:08:01.8731812Z             },
2026-06-22T01:08:01.8731916Z             {
2026-06-22T01:08:01.8732059Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8732168Z               "line": 849
2026-06-22T01:08:01.8732273Z             },
2026-06-22T01:08:01.8732374Z             {
2026-06-22T01:08:01.8732516Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8732635Z               "line": 869
2026-06-22T01:08:01.8732742Z             },
2026-06-22T01:08:01.8732845Z             {
2026-06-22T01:08:01.8732979Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8733099Z               "line": 8403
2026-06-22T01:08:01.8733212Z             }
2026-06-22T01:08:01.8733311Z           ]
2026-06-22T01:08:01.8733417Z         }
2026-06-22T01:08:01.8733505Z       }
2026-06-22T01:08:01.8733609Z     },
2026-06-22T01:08:01.8733701Z     {
2026-06-22T01:08:01.8733938Z       "id": "REQ-INSTALL-5",
2026-06-22T01:08:01.8734454Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-22T01:08:01.8734577Z       "requiredStages": [
2026-06-22T01:08:01.8734688Z         "impl",
2026-06-22T01:08:01.8734788Z         "int"
2026-06-22T01:08:01.8734887Z       ],
2026-06-22T01:08:01.8734994Z       "stages": {
2026-06-22T01:08:01.8735102Z         "doc": {
2026-06-22T01:08:01.8735226Z           "complete": false,
2026-06-22T01:08:01.8735332Z           "evidence": []
2026-06-22T01:08:01.8735531Z         },
2026-06-22T01:08:01.8735638Z         "impl": {
2026-06-22T01:08:01.8735760Z           "complete": true,
2026-06-22T01:08:01.8735873Z           "evidence": [
2026-06-22T01:08:01.8735978Z             {
2026-06-22T01:08:01.8736129Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8736234Z               "line": 5
2026-06-22T01:08:01.8736339Z             },
2026-06-22T01:08:01.8736443Z             {
2026-06-22T01:08:01.8736573Z               "path": "installer/install.sh",
2026-06-22T01:08:01.8736682Z               "line": 6
2026-06-22T01:08:01.8736786Z             }
2026-06-22T01:08:01.8736888Z           ]
2026-06-22T01:08:01.8736992Z         },
2026-06-22T01:08:01.8737101Z         "int": {
2026-06-22T01:08:01.8737212Z           "complete": true,
2026-06-22T01:08:01.8737316Z           "evidence": [
2026-06-22T01:08:01.8737416Z             {
2026-06-22T01:08:01.8737570Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T01:08:01.8737679Z               "line": 22
2026-06-22T01:08:01.8737783Z             }
2026-06-22T01:08:01.8737889Z           ]
2026-06-22T01:08:01.8737988Z         },
2026-06-22T01:08:01.8738098Z         "unit": {
2026-06-22T01:08:01.8738204Z           "complete": false,
2026-06-22T01:08:01.8738317Z           "evidence": []
2026-06-22T01:08:01.8738423Z         }
2026-06-22T01:08:01.8738523Z       }
2026-06-22T01:08:01.8738627Z     },
2026-06-22T01:08:01.8738726Z     {
2026-06-22T01:08:01.8738846Z       "id": "REQ-INSTALL-6",
2026-06-22T01:08:01.8740209Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-22T01:08:01.8740328Z       "requiredStages": [
2026-06-22T01:08:01.8740434Z         "impl",
2026-06-22T01:08:01.8740547Z         "unit"
2026-06-22T01:08:01.8740653Z       ],
2026-06-22T01:08:01.8740759Z       "stages": {
2026-06-22T01:08:01.8740867Z         "doc": {
2026-06-22T01:08:01.8740985Z           "complete": false,
2026-06-22T01:08:01.8741090Z           "evidence": []
2026-06-22T01:08:01.8741194Z         },
2026-06-22T01:08:01.8741307Z         "impl": {
2026-06-22T01:08:01.8741427Z           "complete": true,
2026-06-22T01:08:01.8741532Z           "evidence": [
2026-06-22T01:08:01.8741636Z             {
2026-06-22T01:08:01.8741784Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8741893Z               "line": 61
2026-06-22T01:08:01.8742000Z             },
2026-06-22T01:08:01.8742104Z             {
2026-06-22T01:08:01.8742246Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.8742357Z               "line": 641
2026-06-22T01:08:01.8742472Z             },
2026-06-22T01:08:01.8742571Z             {
2026-06-22T01:08:01.8742724Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.8742843Z               "line": 191
2026-06-22T01:08:01.8742944Z             },
2026-06-22T01:08:01.8743044Z             {
2026-06-22T01:08:01.8743191Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.8743297Z               "line": 276
2026-06-22T01:08:01.8743626Z             },
2026-06-22T01:08:01.8743730Z             {
2026-06-22T01:08:01.8743866Z               "path": "crates/spt/src/main.rs",
2026-06-22T01:08:01.8743977Z               "line": 43
2026-06-22T01:08:01.8744075Z             },
2026-06-22T01:08:01.8744179Z             {
2026-06-22T01:08:01.8744313Z               "path": "installer/install.sh",
2026-06-22T01:08:01.8744432Z               "line": 104
2026-06-22T01:08:01.8744522Z             }
2026-06-22T01:08:01.8744628Z           ]
2026-06-22T01:08:01.8744732Z         },
2026-06-22T01:08:01.8744847Z         "int": {
2026-06-22T01:08:01.8744957Z           "complete": false,
2026-06-22T01:08:01.8745066Z           "evidence": []
2026-06-22T01:08:01.8745286Z         },
2026-06-22T01:08:01.8745385Z         "unit": {
2026-06-22T01:08:01.8745501Z           "complete": true,
2026-06-22T01:08:01.8745615Z           "evidence": [
2026-06-22T01:08:01.8745724Z             {
2026-06-22T01:08:01.8745878Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T01:08:01.8745991Z               "line": 894
2026-06-22T01:08:01.8746096Z             }
2026-06-22T01:08:01.8746198Z           ]
2026-06-22T01:08:01.8746301Z         }
2026-06-22T01:08:01.8746400Z       }
2026-06-22T01:08:01.8746505Z     },
2026-06-22T01:08:01.8746604Z     {
2026-06-22T01:08:01.8746909Z       "id": "REQ-INSTALL-7",
2026-06-22T01:08:01.8748063Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-22T01:08:01.8748191Z       "requiredStages": [
2026-06-22T01:08:01.8748296Z         "impl"
2026-06-22T01:08:01.8748392Z       ],
2026-06-22T01:08:01.8748501Z       "stages": {
2026-06-22T01:08:01.8748610Z         "doc": {
2026-06-22T01:08:01.8748717Z           "complete": false,
2026-06-22T01:08:01.8748834Z           "evidence": []
2026-06-22T01:08:01.8748935Z         },
2026-06-22T01:08:01.8749126Z         "impl": {
2026-06-22T01:08:01.8749244Z           "complete": true,
2026-06-22T01:08:01.8749358Z           "evidence": [
2026-06-22T01:08:01.8749478Z             {
2026-06-22T01:08:01.8749601Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8749711Z               "line": 3920
2026-06-22T01:08:01.8749812Z             },
2026-06-22T01:08:01.8749915Z             {
2026-06-22T01:08:01.8750055Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8750160Z               "line": 157
2026-06-22T01:08:01.8750284Z             }
2026-06-22T01:08:01.8750384Z           ]
2026-06-22T01:08:01.8750489Z         },
2026-06-22T01:08:01.8750593Z         "int": {
2026-06-22T01:08:01.8750708Z           "complete": false,
2026-06-22T01:08:01.8750813Z           "evidence": []
2026-06-22T01:08:01.8750918Z         },
2026-06-22T01:08:01.8751028Z         "unit": {
2026-06-22T01:08:01.8751136Z           "complete": false,
2026-06-22T01:08:01.8751247Z           "evidence": []
2026-06-22T01:08:01.8751338Z         }
2026-06-22T01:08:01.8751446Z       }
2026-06-22T01:08:01.8751541Z     },
2026-06-22T01:08:01.8751641Z     {
2026-06-22T01:08:01.8751768Z       "id": "REQ-INSTALL-8",
2026-06-22T01:08:01.8752855Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-22T01:08:01.8752970Z       "requiredStages": [
2026-06-22T01:08:01.8753074Z         "impl"
2026-06-22T01:08:01.8753174Z       ],
2026-06-22T01:08:01.8753284Z       "stages": {
2026-06-22T01:08:01.8753389Z         "doc": {
2026-06-22T01:08:01.8753618Z           "complete": false,
2026-06-22T01:08:01.8753727Z           "evidence": []
2026-06-22T01:08:01.8753829Z         },
2026-06-22T01:08:01.8753933Z         "impl": {
2026-06-22T01:08:01.8754047Z           "complete": true,
2026-06-22T01:08:01.8754153Z           "evidence": [
2026-06-22T01:08:01.8754257Z             {
2026-06-22T01:08:01.8754384Z               "path": "installer/install.ps1",
2026-06-22T01:08:01.8754489Z               "line": 184
2026-06-22T01:08:01.8754593Z             },
2026-06-22T01:08:01.8754696Z             {
2026-06-22T01:08:01.8754830Z               "path": "installer/install.sh",
2026-06-22T01:08:01.8754941Z               "line": 121
2026-06-22T01:08:01.8755146Z             }
2026-06-22T01:08:01.8755251Z           ]
2026-06-22T01:08:01.8755354Z         },
2026-06-22T01:08:01.8755465Z         "int": {
2026-06-22T01:08:01.8755585Z           "complete": false,
2026-06-22T01:08:01.8755698Z           "evidence": []
2026-06-22T01:08:01.8755799Z         },
2026-06-22T01:08:01.8755903Z         "unit": {
2026-06-22T01:08:01.8756018Z           "complete": false,
2026-06-22T01:08:01.8756128Z           "evidence": []
2026-06-22T01:08:01.8756236Z         }
2026-06-22T01:08:01.8756337Z       }
2026-06-22T01:08:01.8756438Z     },
2026-06-22T01:08:01.8756546Z     {
2026-06-22T01:08:01.8756662Z       "id": "REQ-INSTALL-9",
2026-06-22T01:08:01.8757916Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-22T01:08:01.8758042Z       "requiredStages": [
2026-06-22T01:08:01.8758146Z         "doc",
2026-06-22T01:08:01.8758260Z         "impl",
2026-06-22T01:08:01.8758366Z         "unit"
2026-06-22T01:08:01.8758470Z       ],
2026-06-22T01:08:01.8758584Z       "stages": {
2026-06-22T01:08:01.8758686Z         "doc": {
2026-06-22T01:08:01.8758790Z           "complete": true,
2026-06-22T01:08:01.8758899Z           "evidence": [
2026-06-22T01:08:01.8759070Z             {
2026-06-22T01:08:01.8759185Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8759301Z               "line": 771
2026-06-22T01:08:01.8759404Z             }
2026-06-22T01:08:01.8759509Z           ]
2026-06-22T01:08:01.8759611Z         },
2026-06-22T01:08:01.8759719Z         "impl": {
2026-06-22T01:08:01.8759841Z           "complete": true,
2026-06-22T01:08:01.8759952Z           "evidence": [
2026-06-22T01:08:01.8760057Z             {
2026-06-22T01:08:01.8760185Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8760310Z               "line": 2535
2026-06-22T01:08:01.8760409Z             },
2026-06-22T01:08:01.8760509Z             {
2026-06-22T01:08:01.8760648Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8760752Z               "line": 2559
2026-06-22T01:08:01.8760858Z             }
2026-06-22T01:08:01.8760958Z           ]
2026-06-22T01:08:01.8761063Z         },
2026-06-22T01:08:01.8761168Z         "int": {
2026-06-22T01:08:01.8761287Z           "complete": false,
2026-06-22T01:08:01.8761396Z           "evidence": []
2026-06-22T01:08:01.8761493Z         },
2026-06-22T01:08:01.8761607Z         "unit": {
2026-06-22T01:08:01.8761721Z           "complete": true,
2026-06-22T01:08:01.8761821Z           "evidence": [
2026-06-22T01:08:01.8761921Z             {
2026-06-22T01:08:01.8762053Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8762158Z               "line": 7591
2026-06-22T01:08:01.8762253Z             },
2026-06-22T01:08:01.8762361Z             {
2026-06-22T01:08:01.8762490Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8762605Z               "line": 8433
2026-06-22T01:08:01.8762708Z             }
2026-06-22T01:08:01.8762815Z           ]
2026-06-22T01:08:01.8762914Z         }
2026-06-22T01:08:01.8763110Z       }
2026-06-22T01:08:01.8763225Z     },
2026-06-22T01:08:01.8763319Z     {
2026-06-22T01:08:01.8763430Z       "id": "REQ-KICK-1",
2026-06-22T01:08:01.8765914Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-22T01:08:01.8766163Z       "requiredStages": [
2026-06-22T01:08:01.8766268Z         "doc",
2026-06-22T01:08:01.8766369Z         "impl",
2026-06-22T01:08:01.8766468Z         "unit",
2026-06-22T01:08:01.8766583Z         "int"
2026-06-22T01:08:01.8766688Z       ],
2026-06-22T01:08:01.8766796Z       "stages": {
2026-06-22T01:08:01.8766907Z         "doc": {
2026-06-22T01:08:01.8767027Z           "complete": true,
2026-06-22T01:08:01.8767140Z           "evidence": [
2026-06-22T01:08:01.8767246Z             {
2026-06-22T01:08:01.8767370Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8767483Z               "line": 342
2026-06-22T01:08:01.8767602Z             }
2026-06-22T01:08:01.8767701Z           ]
2026-06-22T01:08:01.8767804Z         },
2026-06-22T01:08:01.8767910Z         "impl": {
2026-06-22T01:08:01.8768030Z           "complete": true,
2026-06-22T01:08:01.8768190Z           "evidence": [
2026-06-22T01:08:01.8768292Z             {
2026-06-22T01:08:01.8768448Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.8768563Z               "line": 41
2026-06-22T01:08:01.8768668Z             },
2026-06-22T01:08:01.8768777Z             {
2026-06-22T01:08:01.8768912Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.8769106Z               "line": 701
2026-06-22T01:08:01.8769202Z             }
2026-06-22T01:08:01.8769316Z           ]
2026-06-22T01:08:01.8769416Z         },
2026-06-22T01:08:01.8769517Z         "int": {
2026-06-22T01:08:01.8769621Z           "complete": true,
2026-06-22T01:08:01.8769740Z           "evidence": [
2026-06-22T01:08:01.8769851Z             {
2026-06-22T01:08:01.8770002Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.8770113Z               "line": 916
2026-06-22T01:08:01.8770214Z             }
2026-06-22T01:08:01.8770321Z           ]
2026-06-22T01:08:01.8770420Z         },
2026-06-22T01:08:01.8770522Z         "unit": {
2026-06-22T01:08:01.8770636Z           "complete": true,
2026-06-22T01:08:01.8770750Z           "evidence": [
2026-06-22T01:08:01.8770851Z             {
2026-06-22T01:08:01.8770988Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.8771104Z               "line": 205
2026-06-22T01:08:01.8771208Z             }
2026-06-22T01:08:01.8771308Z           ]
2026-06-22T01:08:01.8771413Z         }
2026-06-22T01:08:01.8771518Z       }
2026-06-22T01:08:01.8771623Z     },
2026-06-22T01:08:01.8771718Z     {
2026-06-22T01:08:01.8771838Z       "id": "REQ-MANIFEST-1",
2026-06-22T01:08:01.8772043Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-22T01:08:01.8772162Z       "requiredStages": [
2026-06-22T01:08:01.8772276Z         "doc",
2026-06-22T01:08:01.8772377Z         "impl",
2026-06-22T01:08:01.8772486Z         "unit"
2026-06-22T01:08:01.8772585Z       ],
2026-06-22T01:08:01.8772690Z       "stages": {
2026-06-22T01:08:01.8772794Z         "doc": {
2026-06-22T01:08:01.8772912Z           "complete": true,
2026-06-22T01:08:01.8773122Z           "evidence": [
2026-06-22T01:08:01.8773222Z             {
2026-06-22T01:08:01.8773355Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.8773465Z               "line": 19
2026-06-22T01:08:01.8773560Z             }
2026-06-22T01:08:01.8773665Z           ]
2026-06-22T01:08:01.8773770Z         },
2026-06-22T01:08:01.8773879Z         "impl": {
2026-06-22T01:08:01.8773995Z           "complete": true,
2026-06-22T01:08:01.8774099Z           "evidence": [
2026-06-22T01:08:01.8774204Z             {
2026-06-22T01:08:01.8774348Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8774457Z               "line": 18
2026-06-22T01:08:01.8774658Z             }
2026-06-22T01:08:01.8774757Z           ]
2026-06-22T01:08:01.8774848Z         },
2026-06-22T01:08:01.8774959Z         "int": {
2026-06-22T01:08:01.8775072Z           "complete": false,
2026-06-22T01:08:01.8775186Z           "evidence": []
2026-06-22T01:08:01.8775288Z         },
2026-06-22T01:08:01.8775401Z         "unit": {
2026-06-22T01:08:01.8775523Z           "complete": true,
2026-06-22T01:08:01.8775633Z           "evidence": [
2026-06-22T01:08:01.8775741Z             {
2026-06-22T01:08:01.8775888Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8776004Z               "line": 1029
2026-06-22T01:08:01.8776113Z             },
2026-06-22T01:08:01.8776222Z             {
2026-06-22T01:08:01.8776380Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8776493Z               "line": 1325
2026-06-22T01:08:01.8776595Z             },
2026-06-22T01:08:01.8776695Z             {
2026-06-22T01:08:01.8776842Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8776967Z               "line": 1337
2026-06-22T01:08:01.8777076Z             },
2026-06-22T01:08:01.8777196Z             {
2026-06-22T01:08:01.8777356Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8777482Z               "line": 1348
2026-06-22T01:08:01.8777582Z             },
2026-06-22T01:08:01.8777690Z             {
2026-06-22T01:08:01.8777840Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8777944Z               "line": 1365
2026-06-22T01:08:01.8778047Z             },
2026-06-22T01:08:01.8778152Z             {
2026-06-22T01:08:01.8778294Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8778407Z               "line": 1379
2026-06-22T01:08:01.8778517Z             },
2026-06-22T01:08:01.8778623Z             {
2026-06-22T01:08:01.8778760Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8778880Z               "line": 1495
2026-06-22T01:08:01.8779114Z             },
2026-06-22T01:08:01.8779218Z             {
2026-06-22T01:08:01.8779370Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8779481Z               "line": 1510
2026-06-22T01:08:01.8779585Z             },
2026-06-22T01:08:01.8779685Z             {
2026-06-22T01:08:01.8779829Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8779939Z               "line": 1621
2026-06-22T01:08:01.8780048Z             },
2026-06-22T01:08:01.8780149Z             {
2026-06-22T01:08:01.8780295Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8780402Z               "line": 1632
2026-06-22T01:08:01.8780501Z             }
2026-06-22T01:08:01.8780606Z           ]
2026-06-22T01:08:01.8780707Z         }
2026-06-22T01:08:01.8780812Z       }
2026-06-22T01:08:01.8780910Z     },
2026-06-22T01:08:01.8781010Z     {
2026-06-22T01:08:01.8781135Z       "id": "REQ-MANIFEST-2",
2026-06-22T01:08:01.8781659Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-22T01:08:01.8781778Z       "requiredStages": [
2026-06-22T01:08:01.8781877Z         "doc",
2026-06-22T01:08:01.8781973Z         "impl",
2026-06-22T01:08:01.8782083Z         "unit"
2026-06-22T01:08:01.8782313Z       ],
2026-06-22T01:08:01.8782417Z       "stages": {
2026-06-22T01:08:01.8782531Z         "doc": {
2026-06-22T01:08:01.8782637Z           "complete": true,
2026-06-22T01:08:01.8782746Z           "evidence": [
2026-06-22T01:08:01.8782850Z             {
2026-06-22T01:08:01.8782966Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8783079Z               "line": 75
2026-06-22T01:08:01.8783183Z             }
2026-06-22T01:08:01.8783274Z           ]
2026-06-22T01:08:01.8783378Z         },
2026-06-22T01:08:01.8783482Z         "impl": {
2026-06-22T01:08:01.8783600Z           "complete": true,
2026-06-22T01:08:01.8783702Z           "evidence": [
2026-06-22T01:08:01.8783910Z             {
2026-06-22T01:08:01.8784073Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8784172Z               "line": 82
2026-06-22T01:08:01.8784279Z             },
2026-06-22T01:08:01.8784374Z             {
2026-06-22T01:08:01.8784526Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8784635Z               "line": 15
2026-06-22T01:08:01.8784735Z             },
2026-06-22T01:08:01.8784831Z             {
2026-06-22T01:08:01.8784978Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8785098Z               "line": 65
2026-06-22T01:08:01.8785189Z             },
2026-06-22T01:08:01.8785289Z             {
2026-06-22T01:08:01.8785441Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8785552Z               "line": 83
2026-06-22T01:08:01.8785655Z             },
2026-06-22T01:08:01.8785761Z             {
2026-06-22T01:08:01.8785909Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8786022Z               "line": 183
2026-06-22T01:08:01.8786127Z             },
2026-06-22T01:08:01.8786226Z             {
2026-06-22T01:08:01.8786386Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8786506Z               "line": 527
2026-06-22T01:08:01.8786611Z             },
2026-06-22T01:08:01.8786720Z             {
2026-06-22T01:08:01.8786859Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8786982Z               "line": 553
2026-06-22T01:08:01.8787083Z             },
2026-06-22T01:08:01.8787179Z             {
2026-06-22T01:08:01.8787326Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8787431Z               "line": 671
2026-06-22T01:08:01.8787541Z             },
2026-06-22T01:08:01.8787641Z             {
2026-06-22T01:08:01.8787785Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8787894Z               "line": 696
2026-06-22T01:08:01.8788003Z             },
2026-06-22T01:08:01.8788109Z             {
2026-06-22T01:08:01.8788250Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8788352Z               "line": 719
2026-06-22T01:08:01.8788457Z             },
2026-06-22T01:08:01.8788565Z             {
2026-06-22T01:08:01.8788712Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8788821Z               "line": 734
2026-06-22T01:08:01.8788929Z             },
2026-06-22T01:08:01.8789112Z             {
2026-06-22T01:08:01.8789253Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8789359Z               "line": 5567
2026-06-22T01:08:01.8789473Z             },
2026-06-22T01:08:01.8789582Z             {
2026-06-22T01:08:01.8789707Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8789817Z               "line": 5581
2026-06-22T01:08:01.8789921Z             },
2026-06-22T01:08:01.8790032Z             {
2026-06-22T01:08:01.8790150Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8790270Z               "line": 5615
2026-06-22T01:08:01.8790380Z             }
2026-06-22T01:08:01.8790484Z           ]
2026-06-22T01:08:01.8790584Z         },
2026-06-22T01:08:01.8790690Z         "int": {
2026-06-22T01:08:01.8790813Z           "complete": false,
2026-06-22T01:08:01.8790909Z           "evidence": []
2026-06-22T01:08:01.8791122Z         },
2026-06-22T01:08:01.8791229Z         "unit": {
2026-06-22T01:08:01.8791339Z           "complete": true,
2026-06-22T01:08:01.8791456Z           "evidence": [
2026-06-22T01:08:01.8791555Z             {
2026-06-22T01:08:01.8791715Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.8791827Z               "line": 921
2026-06-22T01:08:01.8791933Z             },
2026-06-22T01:08:01.8792033Z             {
2026-06-22T01:08:01.8792185Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8792301Z               "line": 211
2026-06-22T01:08:01.8792401Z             },
2026-06-22T01:08:01.8792601Z             {
2026-06-22T01:08:01.8792743Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8792843Z               "line": 272
2026-06-22T01:08:01.8792954Z             },
2026-06-22T01:08:01.8793058Z             {
2026-06-22T01:08:01.8793211Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8793329Z               "line": 313
2026-06-22T01:08:01.8793439Z             },
2026-06-22T01:08:01.8793546Z             {
2026-06-22T01:08:01.8793691Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8793800Z               "line": 325
2026-06-22T01:08:01.8793906Z             },
2026-06-22T01:08:01.8794008Z             {
2026-06-22T01:08:01.8794147Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8794257Z               "line": 336
2026-06-22T01:08:01.8794365Z             },
2026-06-22T01:08:01.8794466Z             {
2026-06-22T01:08:01.8794615Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8794728Z               "line": 345
2026-06-22T01:08:01.8794834Z             },
2026-06-22T01:08:01.8794934Z             {
2026-06-22T01:08:01.8795076Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8795196Z               "line": 361
2026-06-22T01:08:01.8795295Z             },
2026-06-22T01:08:01.8795400Z             {
2026-06-22T01:08:01.8795548Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8795653Z               "line": 444
2026-06-22T01:08:01.8795759Z             },
2026-06-22T01:08:01.8795868Z             {
2026-06-22T01:08:01.8796020Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8796145Z               "line": 958
2026-06-22T01:08:01.8796254Z             },
2026-06-22T01:08:01.8796355Z             {
2026-06-22T01:08:01.8796511Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8796625Z               "line": 982
2026-06-22T01:08:01.8796725Z             },
2026-06-22T01:08:01.8796833Z             {
2026-06-22T01:08:01.8800181Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8800334Z               "line": 1008
2026-06-22T01:08:01.8800438Z             },
2026-06-22T01:08:01.8800544Z             {
2026-06-22T01:08:01.8800715Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8800830Z               "line": 1027
2026-06-22T01:08:01.8800935Z             },
2026-06-22T01:08:01.8801040Z             {
2026-06-22T01:08:01.8801198Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8801311Z               "line": 1058
2026-06-22T01:08:01.8801421Z             },
2026-06-22T01:08:01.8801522Z             {
2026-06-22T01:08:01.8801678Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.8801794Z               "line": 309
2026-06-22T01:08:01.8801894Z             },
2026-06-22T01:08:01.8801997Z             {
2026-06-22T01:08:01.8802130Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.8802250Z               "line": 606
2026-06-22T01:08:01.8802345Z             },
2026-06-22T01:08:01.8802449Z             {
2026-06-22T01:08:01.8802584Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8802697Z               "line": 8610
2026-06-22T01:08:01.8802942Z             },
2026-06-22T01:08:01.8803040Z             {
2026-06-22T01:08:01.8803166Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8803270Z               "line": 9558
2026-06-22T01:08:01.8803375Z             }
2026-06-22T01:08:01.8803476Z           ]
2026-06-22T01:08:01.8803575Z         }
2026-06-22T01:08:01.8803680Z       }
2026-06-22T01:08:01.8803781Z     },
2026-06-22T01:08:01.8803881Z     {
2026-06-22T01:08:01.8804004Z       "id": "REQ-MANIFEST-3",
2026-06-22T01:08:01.8804687Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-22T01:08:01.8804911Z       "requiredStages": [
2026-06-22T01:08:01.8805012Z         "doc",
2026-06-22T01:08:01.8805117Z         "impl",
2026-06-22T01:08:01.8805221Z         "unit"
2026-06-22T01:08:01.8805326Z       ],
2026-06-22T01:08:01.8805437Z       "stages": {
2026-06-22T01:08:01.8805541Z         "doc": {
2026-06-22T01:08:01.8805666Z           "complete": true,
2026-06-22T01:08:01.8805770Z           "evidence": [
2026-06-22T01:08:01.8805875Z             {
2026-06-22T01:08:01.8805995Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8806104Z               "line": 81
2026-06-22T01:08:01.8806203Z             }
2026-06-22T01:08:01.8806305Z           ]
2026-06-22T01:08:01.8806400Z         },
2026-06-22T01:08:01.8806490Z         "impl": {
2026-06-22T01:08:01.8806610Z           "complete": true,
2026-06-22T01:08:01.8806720Z           "evidence": [
2026-06-22T01:08:01.8806829Z             {
2026-06-22T01:08:01.8806992Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8807104Z               "line": 92
2026-06-22T01:08:01.8807213Z             },
2026-06-22T01:08:01.8807309Z             {
2026-06-22T01:08:01.8807474Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8807574Z               "line": 101
2026-06-22T01:08:01.8807679Z             },
2026-06-22T01:08:01.8807783Z             {
2026-06-22T01:08:01.8807927Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8808061Z               "line": 132
2026-06-22T01:08:01.8808150Z             },
2026-06-22T01:08:01.8808257Z             {
2026-06-22T01:08:01.8808394Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8808503Z               "line": 577
2026-06-22T01:08:01.8808610Z             },
2026-06-22T01:08:01.8808709Z             {
2026-06-22T01:08:01.8808847Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8809032Z               "line": 633
2026-06-22T01:08:01.8809142Z             },
2026-06-22T01:08:01.8809244Z             {
2026-06-22T01:08:01.8809381Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8809497Z               "line": 5628
2026-06-22T01:08:01.8809596Z             },
2026-06-22T01:08:01.8809700Z             {
2026-06-22T01:08:01.8809832Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8809946Z               "line": 5654
2026-06-22T01:08:01.8810045Z             }
2026-06-22T01:08:01.8810145Z           ]
2026-06-22T01:08:01.8810241Z         },
2026-06-22T01:08:01.8810350Z         "int": {
2026-06-22T01:08:01.8810469Z           "complete": false,
2026-06-22T01:08:01.8810566Z           "evidence": []
2026-06-22T01:08:01.8810669Z         },
2026-06-22T01:08:01.8810775Z         "unit": {
2026-06-22T01:08:01.8810880Z           "complete": true,
2026-06-22T01:08:01.8810998Z           "evidence": [
2026-06-22T01:08:01.8811090Z             {
2026-06-22T01:08:01.8811242Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8811356Z               "line": 371
2026-06-22T01:08:01.8811458Z             },
2026-06-22T01:08:01.8811557Z             {
2026-06-22T01:08:01.8811690Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8811801Z               "line": 429
2026-06-22T01:08:01.8811900Z             },
2026-06-22T01:08:01.8812107Z             {
2026-06-22T01:08:01.8812248Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8812359Z               "line": 1082
2026-06-22T01:08:01.8812459Z             },
2026-06-22T01:08:01.8812562Z             {
2026-06-22T01:08:01.8812686Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8812796Z               "line": 8703
2026-06-22T01:08:01.8812901Z             }
2026-06-22T01:08:01.8812991Z           ]
2026-06-22T01:08:01.8813097Z         }
2026-06-22T01:08:01.8813192Z       }
2026-06-22T01:08:01.8813286Z     },
2026-06-22T01:08:01.8813378Z     {
2026-06-22T01:08:01.8813492Z       "id": "REQ-MANIFEST-4",
2026-06-22T01:08:01.8814313Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-22T01:08:01.8814436Z       "requiredStages": [
2026-06-22T01:08:01.8814541Z         "doc",
2026-06-22T01:08:01.8814642Z         "impl",
2026-06-22T01:08:01.8814742Z         "unit"
2026-06-22T01:08:01.8814835Z       ],
2026-06-22T01:08:01.8814940Z       "stages": {
2026-06-22T01:08:01.8815040Z         "doc": {
2026-06-22T01:08:01.8815152Z           "complete": true,
2026-06-22T01:08:01.8815272Z           "evidence": [
2026-06-22T01:08:01.8815372Z             {
2026-06-22T01:08:01.8815486Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8815596Z               "line": 88
2026-06-22T01:08:01.8815696Z             }
2026-06-22T01:08:01.8815805Z           ]
2026-06-22T01:08:01.8815906Z         },
2026-06-22T01:08:01.8816030Z         "impl": {
2026-06-22T01:08:01.8816148Z           "complete": true,
2026-06-22T01:08:01.8816250Z           "evidence": [
2026-06-22T01:08:01.8816359Z             {
2026-06-22T01:08:01.8816512Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8816622Z               "line": 100
2026-06-22T01:08:01.8816717Z             },
2026-06-22T01:08:01.8816821Z             {
2026-06-22T01:08:01.8816965Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8817074Z               "line": 183
2026-06-22T01:08:01.8817180Z             },
2026-06-22T01:08:01.8817275Z             {
2026-06-22T01:08:01.8817422Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8817528Z               "line": 83
2026-06-22T01:08:01.8817637Z             },
2026-06-22T01:08:01.8817736Z             {
2026-06-22T01:08:01.8817883Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.8817991Z               "line": 629
2026-06-22T01:08:01.8818096Z             },
2026-06-22T01:08:01.8818201Z             {
2026-06-22T01:08:01.8818348Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.8818463Z               "line": 654
2026-06-22T01:08:01.8818559Z             }
2026-06-22T01:08:01.8818649Z           ]
2026-06-22T01:08:01.8818753Z         },
2026-06-22T01:08:01.8818864Z         "int": {
2026-06-22T01:08:01.8819068Z           "complete": false,
2026-06-22T01:08:01.8819179Z           "evidence": []
2026-06-22T01:08:01.8819284Z         },
2026-06-22T01:08:01.8819379Z         "unit": {
2026-06-22T01:08:01.8819489Z           "complete": true,
2026-06-22T01:08:01.8819597Z           "evidence": [
2026-06-22T01:08:01.8819698Z             {
2026-06-22T01:08:01.8819846Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8819951Z               "line": 1445
2026-06-22T01:08:01.8820052Z             },
2026-06-22T01:08:01.8820147Z             {
2026-06-22T01:08:01.8820293Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8820407Z               "line": 1478
2026-06-22T01:08:01.8820516Z             },
2026-06-22T01:08:01.8820615Z             {
2026-06-22T01:08:01.8820753Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.8820863Z               "line": 988
2026-06-22T01:08:01.8821088Z             }
2026-06-22T01:08:01.8821183Z           ]
2026-06-22T01:08:01.8821287Z         }
2026-06-22T01:08:01.8821388Z       }
2026-06-22T01:08:01.8821483Z     },
2026-06-22T01:08:01.8821578Z     {
2026-06-22T01:08:01.8821703Z       "id": "REQ-MANIFEST-5",
2026-06-22T01:08:01.8824606Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-22T01:08:01.8824853Z       "requiredStages": [
2026-06-22T01:08:01.8824958Z         "doc",
2026-06-22T01:08:01.8825062Z         "impl",
2026-06-22T01:08:01.8825168Z         "unit"
2026-06-22T01:08:01.8825268Z       ],
2026-06-22T01:08:01.8825377Z       "stages": {
2026-06-22T01:08:01.8825481Z         "doc": {
2026-06-22T01:08:01.8825595Z           "complete": true,
2026-06-22T01:08:01.8825699Z           "evidence": [
2026-06-22T01:08:01.8825812Z             {
2026-06-22T01:08:01.8825933Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8826046Z               "line": 83
2026-06-22T01:08:01.8826151Z             }
2026-06-22T01:08:01.8826252Z           ]
2026-06-22T01:08:01.8826347Z         },
2026-06-22T01:08:01.8826447Z         "impl": {
2026-06-22T01:08:01.8826567Z           "complete": true,
2026-06-22T01:08:01.8826671Z           "evidence": [
2026-06-22T01:08:01.8826766Z             {
2026-06-22T01:08:01.8826915Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8827023Z               "line": 120
2026-06-22T01:08:01.8827139Z             }
2026-06-22T01:08:01.8827239Z           ]
2026-06-22T01:08:01.8827343Z         },
2026-06-22T01:08:01.8827435Z         "int": {
2026-06-22T01:08:01.8827548Z           "complete": false,
2026-06-22T01:08:01.8827663Z           "evidence": []
2026-06-22T01:08:01.8827764Z         },
2026-06-22T01:08:01.8827873Z         "unit": {
2026-06-22T01:08:01.8827982Z           "complete": true,
2026-06-22T01:08:01.8828084Z           "evidence": [
2026-06-22T01:08:01.8828174Z             {
2026-06-22T01:08:01.8828329Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T01:08:01.8828439Z               "line": 404
2026-06-22T01:08:01.8828542Z             },
2026-06-22T01:08:01.8828651Z             {
2026-06-22T01:08:01.8828800Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8828918Z               "line": 1155
2026-06-22T01:08:01.8829086Z             },
2026-06-22T01:08:01.8829186Z             {
2026-06-22T01:08:01.8829328Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8829453Z               "line": 1184
2026-06-22T01:08:01.8829552Z             },
2026-06-22T01:08:01.8829633Z             {
2026-06-22T01:08:01.8829772Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8829877Z               "line": 1224
2026-06-22T01:08:01.8829982Z             },
2026-06-22T01:08:01.8830087Z             {
2026-06-22T01:08:01.8830229Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8830345Z               "line": 1239
2026-06-22T01:08:01.8830449Z             }
2026-06-22T01:08:01.8830544Z           ]
2026-06-22T01:08:01.8830645Z         }
2026-06-22T01:08:01.8830750Z       }
2026-06-22T01:08:01.8830944Z     },
2026-06-22T01:08:01.8831044Z     {
2026-06-22T01:08:01.8831170Z       "id": "REQ-MANIFEST-6",
2026-06-22T01:08:01.8833339Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-22T01:08:01.8833570Z       "requiredStages": [
2026-06-22T01:08:01.8833677Z         "doc",
2026-06-22T01:08:01.8833772Z         "unit"
2026-06-22T01:08:01.8833873Z       ],
2026-06-22T01:08:01.8833983Z       "stages": {
2026-06-22T01:08:01.8834087Z         "doc": {
2026-06-22T01:08:01.8834207Z           "complete": true,
2026-06-22T01:08:01.8834321Z           "evidence": [
2026-06-22T01:08:01.8834425Z             {
2026-06-22T01:08:01.8834541Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8834650Z               "line": 141
2026-06-22T01:08:01.8834755Z             }
2026-06-22T01:08:01.8834856Z           ]
2026-06-22T01:08:01.8834955Z         },
2026-06-22T01:08:01.8835060Z         "impl": {
2026-06-22T01:08:01.8835166Z           "complete": false,
2026-06-22T01:08:01.8835280Z           "evidence": []
2026-06-22T01:08:01.8835379Z         },
2026-06-22T01:08:01.8835486Z         "int": {
2026-06-22T01:08:01.8835599Z           "complete": false,
2026-06-22T01:08:01.8835704Z           "evidence": []
2026-06-22T01:08:01.8835801Z         },
2026-06-22T01:08:01.8835908Z         "unit": {
2026-06-22T01:08:01.8836017Z           "complete": true,
2026-06-22T01:08:01.8836132Z           "evidence": [
2026-06-22T01:08:01.8836239Z             {
2026-06-22T01:08:01.8836387Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:01.8836502Z               "line": 1261
2026-06-22T01:08:01.8836597Z             }
2026-06-22T01:08:01.8836702Z           ]
2026-06-22T01:08:01.8836803Z         }
2026-06-22T01:08:01.8836907Z       }
2026-06-22T01:08:01.8837007Z     },
2026-06-22T01:08:01.8837103Z     {
2026-06-22T01:08:01.8837212Z       "id": "REQ-MANIFEST-7",
2026-06-22T01:08:01.8840328Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-22T01:08:01.8840470Z       "requiredStages": [
2026-06-22T01:08:01.8840576Z         "doc",
2026-06-22T01:08:01.8840680Z         "impl",
2026-06-22T01:08:01.8840809Z         "unit"
2026-06-22T01:08:01.8840914Z       ],
2026-06-22T01:08:01.8841018Z       "stages": {
2026-06-22T01:08:01.8841123Z         "doc": {
2026-06-22T01:08:01.8841244Z           "complete": true,
2026-06-22T01:08:01.8841352Z           "evidence": [
2026-06-22T01:08:01.8841456Z             {
2026-06-22T01:08:01.8841575Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.8841806Z               "line": 35
2026-06-22T01:08:01.8841903Z             }
2026-06-22T01:08:01.8842007Z           ]
2026-06-22T01:08:01.8842112Z         },
2026-06-22T01:08:01.8842213Z         "impl": {
2026-06-22T01:08:01.8842332Z           "complete": true,
2026-06-22T01:08:01.8842440Z           "evidence": [
2026-06-22T01:08:01.8842546Z             {
2026-06-22T01:08:01.8842684Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.8842790Z               "line": 54
2026-06-22T01:08:01.8842894Z             }
2026-06-22T01:08:01.8842999Z           ]
2026-06-22T01:08:01.8843099Z         },
2026-06-22T01:08:01.8843295Z         "int": {
2026-06-22T01:08:01.8843409Z           "complete": false,
2026-06-22T01:08:01.8843580Z           "evidence": []
2026-06-22T01:08:01.8843685Z         },
2026-06-22T01:08:01.8843787Z         "unit": {
2026-06-22T01:08:01.8843899Z           "complete": true,
2026-06-22T01:08:01.8844020Z           "evidence": [
2026-06-22T01:08:01.8844125Z             {
2026-06-22T01:08:01.8844276Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8844381Z               "line": 1638
2026-06-22T01:08:01.8844486Z             }
2026-06-22T01:08:01.8844590Z           ]
2026-06-22T01:08:01.8844685Z         }
2026-06-22T01:08:01.8844791Z       }
2026-06-22T01:08:01.8844886Z     },
2026-06-22T01:08:01.8844981Z     {
2026-06-22T01:08:01.8845101Z       "id": "REQ-MANIFEST-8",
2026-06-22T01:08:01.8847457Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-22T01:08:01.8847611Z       "requiredStages": [
2026-06-22T01:08:01.8847715Z         "doc",
2026-06-22T01:08:01.8847820Z         "impl",
2026-06-22T01:08:01.8847926Z         "unit",
2026-06-22T01:08:01.8848030Z         "int"
2026-06-22T01:08:01.8848134Z       ],
2026-06-22T01:08:01.8848240Z       "stages": {
2026-06-22T01:08:01.8848339Z         "doc": {
2026-06-22T01:08:01.8848459Z           "complete": true,
2026-06-22T01:08:01.8848570Z           "evidence": [
2026-06-22T01:08:01.8848688Z             {
2026-06-22T01:08:01.8848811Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8848932Z               "line": 184
2026-06-22T01:08:01.8849117Z             },
2026-06-22T01:08:01.8849228Z             {
2026-06-22T01:08:01.8849350Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.8849459Z               "line": 46
2026-06-22T01:08:01.8849569Z             }
2026-06-22T01:08:01.8849671Z           ]
2026-06-22T01:08:01.8849780Z         },
2026-06-22T01:08:01.8849886Z         "impl": {
2026-06-22T01:08:01.8850000Z           "complete": true,
2026-06-22T01:08:01.8850115Z           "evidence": [
2026-06-22T01:08:01.8850216Z             {
2026-06-22T01:08:01.8850367Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8850468Z               "line": 222
2026-06-22T01:08:01.8850568Z             },
2026-06-22T01:08:01.8850668Z             {
2026-06-22T01:08:01.8850807Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8850921Z               "line": 306
2026-06-22T01:08:01.8851016Z             }
2026-06-22T01:08:01.8851122Z           ]
2026-06-22T01:08:01.8851221Z         },
2026-06-22T01:08:01.8851331Z         "int": {
2026-06-22T01:08:01.8851447Z           "complete": true,
2026-06-22T01:08:01.8851560Z           "evidence": [
2026-06-22T01:08:01.8851665Z             {
2026-06-22T01:08:01.8851931Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T01:08:01.8852040Z               "line": 18
2026-06-22T01:08:01.8852145Z             }
2026-06-22T01:08:01.8852243Z           ]
2026-06-22T01:08:01.8852338Z         },
2026-06-22T01:08:01.8852453Z         "unit": {
2026-06-22T01:08:01.8852572Z           "complete": true,
2026-06-22T01:08:01.8852681Z           "evidence": [
2026-06-22T01:08:01.8852783Z             {
2026-06-22T01:08:01.8852929Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.8853050Z               "line": 1656
2026-06-22T01:08:01.8853145Z             },
2026-06-22T01:08:01.8853360Z             {
2026-06-22T01:08:01.8853511Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8853621Z               "line": 316
2026-06-22T01:08:01.8853722Z             },
2026-06-22T01:08:01.8853812Z             {
2026-06-22T01:08:01.8853964Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8854070Z               "line": 332
2026-06-22T01:08:01.8854179Z             },
2026-06-22T01:08:01.8854279Z             {
2026-06-22T01:08:01.8854422Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.8854532Z               "line": 345
2026-06-22T01:08:01.8854633Z             },
2026-06-22T01:08:01.8854737Z             {
2026-06-22T01:08:01.8854878Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8854979Z               "line": 422
2026-06-22T01:08:01.8855080Z             },
2026-06-22T01:08:01.8855169Z             {
2026-06-22T01:08:01.8855298Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T01:08:01.8855414Z               "line": 436
2026-06-22T01:08:01.8855517Z             }
2026-06-22T01:08:01.8855619Z           ]
2026-06-22T01:08:01.8855718Z         }
2026-06-22T01:08:01.8855822Z       }
2026-06-22T01:08:01.8855924Z     },
2026-06-22T01:08:01.8856023Z     {
2026-06-22T01:08:01.8856132Z       "id": "REQ-MESH-1",
2026-06-22T01:08:01.8858219Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-22T01:08:01.8858365Z       "requiredStages": [
2026-06-22T01:08:01.8858471Z         "impl",
2026-06-22T01:08:01.8858571Z         "unit",
2026-06-22T01:08:01.8858675Z         "int"
2026-06-22T01:08:01.8858776Z       ],
2026-06-22T01:08:01.8858886Z       "stages": {
2026-06-22T01:08:01.8859081Z         "doc": {
2026-06-22T01:08:01.8859201Z           "complete": false,
2026-06-22T01:08:01.8859315Z           "evidence": []
2026-06-22T01:08:01.8859411Z         },
2026-06-22T01:08:01.8859520Z         "impl": {
2026-06-22T01:08:01.8859634Z           "complete": true,
2026-06-22T01:08:01.8859740Z           "evidence": [
2026-06-22T01:08:01.8859840Z             {
2026-06-22T01:08:01.8859995Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.8860105Z               "line": 972
2026-06-22T01:08:01.8860213Z             },
2026-06-22T01:08:01.8860317Z             {
2026-06-22T01:08:01.8860480Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8860603Z               "line": 38
2026-06-22T01:08:01.8860704Z             },
2026-06-22T01:08:01.8860814Z             {
2026-06-22T01:08:01.8860965Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8861072Z               "line": 161
2026-06-22T01:08:01.8861176Z             },
2026-06-22T01:08:01.8861387Z             {
2026-06-22T01:08:01.8861538Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8861648Z               "line": 206
2026-06-22T01:08:01.8861753Z             },
2026-06-22T01:08:01.8861852Z             {
2026-06-22T01:08:01.8862007Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.8862115Z               "line": 57
2026-06-22T01:08:01.8862215Z             },
2026-06-22T01:08:01.8862316Z             {
2026-06-22T01:08:01.8862467Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8862590Z               "line": 24
2026-06-22T01:08:01.8862775Z             },
2026-06-22T01:08:01.8862879Z             {
2026-06-22T01:08:01.8863038Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8863151Z               "line": 142
2026-06-22T01:08:01.8863256Z             },
2026-06-22T01:08:01.8863352Z             {
2026-06-22T01:08:01.8863508Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8863624Z               "line": 162
2026-06-22T01:08:01.8863733Z             }
2026-06-22T01:08:01.8863842Z           ]
2026-06-22T01:08:01.8863944Z         },
2026-06-22T01:08:01.8864048Z         "int": {
2026-06-22T01:08:01.8864157Z           "complete": true,
2026-06-22T01:08:01.8864268Z           "evidence": [
2026-06-22T01:08:01.8864372Z             {
2026-06-22T01:08:01.8864530Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:08:01.8864635Z               "line": 67
2026-06-22T01:08:01.8864734Z             },
2026-06-22T01:08:01.8864840Z             {
2026-06-22T01:08:01.8865001Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:08:01.8865111Z               "line": 93
2026-06-22T01:08:01.8865208Z             },
2026-06-22T01:08:01.8865316Z             {
2026-06-22T01:08:01.8865477Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:08:01.8865588Z               "line": 117
2026-06-22T01:08:01.8865692Z             },
2026-06-22T01:08:01.8865792Z             {
2026-06-22T01:08:01.8865949Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T01:08:01.8866053Z               "line": 134
2026-06-22T01:08:01.8866160Z             }
2026-06-22T01:08:01.8866255Z           ]
2026-06-22T01:08:01.8866359Z         },
2026-06-22T01:08:01.8866469Z         "unit": {
2026-06-22T01:08:01.8866588Z           "complete": true,
2026-06-22T01:08:01.8866697Z           "evidence": [
2026-06-22T01:08:01.8866799Z             {
2026-06-22T01:08:01.8866945Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.8867060Z               "line": 427
2026-06-22T01:08:01.8867161Z             },
2026-06-22T01:08:01.8867269Z             {
2026-06-22T01:08:01.8867433Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8867547Z               "line": 376
2026-06-22T01:08:01.8867655Z             },
2026-06-22T01:08:01.8867760Z             {
2026-06-22T01:08:01.8867925Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8868034Z               "line": 412
2026-06-22T01:08:01.8868145Z             },
2026-06-22T01:08:01.8868244Z             {
2026-06-22T01:08:01.8868406Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8868511Z               "line": 427
2026-06-22T01:08:01.8868615Z             },
2026-06-22T01:08:01.8868726Z             {
2026-06-22T01:08:01.8868874Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8869070Z               "line": 438
2026-06-22T01:08:01.8869174Z             },
2026-06-22T01:08:01.8869283Z             {
2026-06-22T01:08:01.8869446Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8869555Z               "line": 449
2026-06-22T01:08:01.8869661Z             },
2026-06-22T01:08:01.8869761Z             {
2026-06-22T01:08:01.8869917Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8870122Z               "line": 460
2026-06-22T01:08:01.8870232Z             },
2026-06-22T01:08:01.8870339Z             {
2026-06-22T01:08:01.8870498Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8870603Z               "line": 496
2026-06-22T01:08:01.8870708Z             },
2026-06-22T01:08:01.8870806Z             {
2026-06-22T01:08:01.8870958Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8871079Z               "line": 519
2026-06-22T01:08:01.8871187Z             },
2026-06-22T01:08:01.8871283Z             {
2026-06-22T01:08:01.8871535Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8871646Z               "line": 546
2026-06-22T01:08:01.8871741Z             }
2026-06-22T01:08:01.8871845Z           ]
2026-06-22T01:08:01.8871947Z         }
2026-06-22T01:08:01.8872055Z       }
2026-06-22T01:08:01.8872155Z     },
2026-06-22T01:08:01.8872262Z     {
2026-06-22T01:08:01.8872370Z       "id": "REQ-MESH-2",
2026-06-22T01:08:01.8874932Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-22T01:08:01.8875075Z       "requiredStages": [
2026-06-22T01:08:01.8875185Z         "impl",
2026-06-22T01:08:01.8875294Z         "unit",
2026-06-22T01:08:01.8875405Z         "int"
2026-06-22T01:08:01.8875505Z       ],
2026-06-22T01:08:01.8875609Z       "stages": {
2026-06-22T01:08:01.8875720Z         "doc": {
2026-06-22T01:08:01.8875834Z           "complete": false,
2026-06-22T01:08:01.8875942Z           "evidence": []
2026-06-22T01:08:01.8876047Z         },
2026-06-22T01:08:01.8876157Z         "impl": {
2026-06-22T01:08:01.8876266Z           "complete": true,
2026-06-22T01:08:01.8876380Z           "evidence": [
2026-06-22T01:08:01.8876482Z             {
2026-06-22T01:08:01.8876632Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.8876753Z               "line": 807
2026-06-22T01:08:01.8876863Z             },
2026-06-22T01:08:01.8876966Z             {
2026-06-22T01:08:01.8877120Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8877229Z               "line": 118
2026-06-22T01:08:01.8877339Z             },
2026-06-22T01:08:01.8877445Z             {
2026-06-22T01:08:01.8877591Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8877698Z               "line": 347
2026-06-22T01:08:01.8877806Z             },
2026-06-22T01:08:01.8877902Z             {
2026-06-22T01:08:01.8878051Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8878154Z               "line": 389
2026-06-22T01:08:01.8878263Z             },
2026-06-22T01:08:01.8878363Z             {
2026-06-22T01:08:01.8878513Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8878628Z               "line": 403
2026-06-22T01:08:01.8878728Z             },
2026-06-22T01:08:01.8878837Z             {
2026-06-22T01:08:01.8879066Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8879190Z               "line": 492
2026-06-22T01:08:01.8879296Z             },
2026-06-22T01:08:01.8879395Z             {
2026-06-22T01:08:01.8879543Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8879758Z               "line": 507
2026-06-22T01:08:01.8879872Z             },
2026-06-22T01:08:01.8879973Z             {
2026-06-22T01:08:01.8880125Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8880241Z               "line": 534
2026-06-22T01:08:01.8880340Z             },
2026-06-22T01:08:01.8880444Z             {
2026-06-22T01:08:01.8880598Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8880706Z               "line": 207
2026-06-22T01:08:01.8880807Z             },
2026-06-22T01:08:01.8880903Z             {
2026-06-22T01:08:01.8881144Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8881254Z               "line": 755
2026-06-22T01:08:01.8881366Z             },
2026-06-22T01:08:01.8881466Z             {
2026-06-22T01:08:01.8881615Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8881718Z               "line": 816
2026-06-22T01:08:01.8881834Z             },
2026-06-22T01:08:01.8881938Z             {
2026-06-22T01:08:01.8882086Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8882206Z               "line": 869
2026-06-22T01:08:01.8882311Z             },
2026-06-22T01:08:01.8882415Z             {
2026-06-22T01:08:01.8882559Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8882663Z               "line": 891
2026-06-22T01:08:01.8882773Z             },
2026-06-22T01:08:01.8882878Z             {
2026-06-22T01:08:01.8883030Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8883136Z               "line": 122
2026-06-22T01:08:01.8883244Z             },
2026-06-22T01:08:01.8883345Z             {
2026-06-22T01:08:01.8883494Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8883611Z               "line": 44
2026-06-22T01:08:01.8883710Z             },
2026-06-22T01:08:01.8883816Z             {
2026-06-22T01:08:01.8883947Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8884062Z               "line": 184
2026-06-22T01:08:01.8884167Z             },
2026-06-22T01:08:01.8884271Z             {
2026-06-22T01:08:01.8884415Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8884520Z               "line": 211
2026-06-22T01:08:01.8884629Z             },
2026-06-22T01:08:01.8884730Z             {
2026-06-22T01:08:01.8884868Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8884977Z               "line": 251
2026-06-22T01:08:01.8885074Z             },
2026-06-22T01:08:01.8885177Z             {
2026-06-22T01:08:01.8885320Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8885435Z               "line": 275
2026-06-22T01:08:01.8885535Z             },
2026-06-22T01:08:01.8885645Z             {
2026-06-22T01:08:01.8885787Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8885897Z               "line": 289
2026-06-22T01:08:01.8886008Z             },
2026-06-22T01:08:01.8886112Z             {
2026-06-22T01:08:01.8886246Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8886352Z               "line": 300
2026-06-22T01:08:01.8886459Z             },
2026-06-22T01:08:01.8886568Z             {
2026-06-22T01:08:01.8886703Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8886822Z               "line": 313
2026-06-22T01:08:01.8886921Z             }
2026-06-22T01:08:01.8887027Z           ]
2026-06-22T01:08:01.8887127Z         },
2026-06-22T01:08:01.8887231Z         "int": {
2026-06-22T01:08:01.8887342Z           "complete": true,
2026-06-22T01:08:01.8887456Z           "evidence": [
2026-06-22T01:08:01.8887566Z             {
2026-06-22T01:08:01.8887723Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T01:08:01.8887832Z               "line": 116
2026-06-22T01:08:01.8887924Z             },
2026-06-22T01:08:01.8888028Z             {
2026-06-22T01:08:01.8888258Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T01:08:01.8888366Z               "line": 181
2026-06-22T01:08:01.8888471Z             }
2026-06-22T01:08:01.8888573Z           ]
2026-06-22T01:08:01.8888667Z         },
2026-06-22T01:08:01.8888761Z         "unit": {
2026-06-22T01:08:01.8888885Z           "complete": true,
2026-06-22T01:08:01.8889074Z           "evidence": [
2026-06-22T01:08:01.8889178Z             {
2026-06-22T01:08:01.8889327Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8889435Z               "line": 999
2026-06-22T01:08:01.8889537Z             },
2026-06-22T01:08:01.8889764Z             {
2026-06-22T01:08:01.8889918Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8890032Z               "line": 1016
2026-06-22T01:08:01.8890137Z             },
2026-06-22T01:08:01.8890242Z             {
2026-06-22T01:08:01.8890394Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8890505Z               "line": 1024
2026-06-22T01:08:01.8890609Z             },
2026-06-22T01:08:01.8890713Z             {
2026-06-22T01:08:01.8890872Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8890981Z               "line": 1048
2026-06-22T01:08:01.8891086Z             },
2026-06-22T01:08:01.8891177Z             {
2026-06-22T01:08:01.8891325Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.8891430Z               "line": 1499
2026-06-22T01:08:01.8891535Z             },
2026-06-22T01:08:01.8894578Z             {
2026-06-22T01:08:01.8894766Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8894898Z               "line": 347
2026-06-22T01:08:01.8895000Z             },
2026-06-22T01:08:01.8895104Z             {
2026-06-22T01:08:01.8895256Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8895380Z               "line": 370
2026-06-22T01:08:01.8895484Z             },
2026-06-22T01:08:01.8895590Z             {
2026-06-22T01:08:01.8895737Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8895852Z               "line": 407
2026-06-22T01:08:01.8895958Z             },
2026-06-22T01:08:01.8896067Z             {
2026-06-22T01:08:01.8896205Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8896320Z               "line": 431
2026-06-22T01:08:01.8896410Z             },
2026-06-22T01:08:01.8896520Z             {
2026-06-22T01:08:01.8896663Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8896777Z               "line": 483
2026-06-22T01:08:01.8896878Z             },
2026-06-22T01:08:01.8896982Z             {
2026-06-22T01:08:01.8897133Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8897244Z               "line": 499
2026-06-22T01:08:01.8897348Z             },
2026-06-22T01:08:01.8897448Z             {
2026-06-22T01:08:01.8897597Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8897705Z               "line": 514
2026-06-22T01:08:01.8897806Z             },
2026-06-22T01:08:01.8897911Z             {
2026-06-22T01:08:01.8898049Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8898164Z               "line": 531
2026-06-22T01:08:01.8898264Z             }
2026-06-22T01:08:01.8898373Z           ]
2026-06-22T01:08:01.8898474Z         }
2026-06-22T01:08:01.8898579Z       }
2026-06-22T01:08:01.8898683Z     },
2026-06-22T01:08:01.8898784Z     {
2026-06-22T01:08:01.8898898Z       "id": "REQ-MESH-3",
2026-06-22T01:08:01.8900727Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-22T01:08:01.8901012Z       "requiredStages": [
2026-06-22T01:08:01.8901112Z         "impl",
2026-06-22T01:08:01.8901212Z         "unit",
2026-06-22T01:08:01.8901322Z         "int"
2026-06-22T01:08:01.8901427Z       ],
2026-06-22T01:08:01.8901531Z       "stages": {
2026-06-22T01:08:01.8901642Z         "doc": {
2026-06-22T01:08:01.8901756Z           "complete": false,
2026-06-22T01:08:01.8901870Z           "evidence": []
2026-06-22T01:08:01.8901966Z         },
2026-06-22T01:08:01.8902071Z         "impl": {
2026-06-22T01:08:01.8902293Z           "complete": true,
2026-06-22T01:08:01.8902393Z           "evidence": [
2026-06-22T01:08:01.8902492Z             {
2026-06-22T01:08:01.8902639Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8902744Z               "line": 641
2026-06-22T01:08:01.8902839Z             }
2026-06-22T01:08:01.8902959Z           ]
2026-06-22T01:08:01.8903064Z         },
2026-06-22T01:08:01.8903163Z         "int": {
2026-06-22T01:08:01.8903279Z           "complete": true,
2026-06-22T01:08:01.8903388Z           "evidence": [
2026-06-22T01:08:01.8903488Z             {
2026-06-22T01:08:01.8903641Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T01:08:01.8903750Z               "line": 373
2026-06-22T01:08:01.8903860Z             },
2026-06-22T01:08:01.8903956Z             {
2026-06-22T01:08:01.8904103Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T01:08:01.8904203Z               "line": 436
2026-06-22T01:08:01.8904304Z             }
2026-06-22T01:08:01.8904407Z           ]
2026-06-22T01:08:01.8904518Z         },
2026-06-22T01:08:01.8904628Z         "unit": {
2026-06-22T01:08:01.8904731Z           "complete": true,
2026-06-22T01:08:01.8904845Z           "evidence": [
2026-06-22T01:08:01.8904946Z             {
2026-06-22T01:08:01.8905096Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.8905206Z               "line": 910
2026-06-22T01:08:01.8905307Z             }
2026-06-22T01:08:01.8905401Z           ]
2026-06-22T01:08:01.8905496Z         }
2026-06-22T01:08:01.8905593Z       }
2026-06-22T01:08:01.8905697Z     },
2026-06-22T01:08:01.8905801Z     {
2026-06-22T01:08:01.8905912Z       "id": "REQ-MESH-4",
2026-06-22T01:08:01.8908119Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-22T01:08:01.8908252Z       "requiredStages": [
2026-06-22T01:08:01.8908361Z         "impl",
2026-06-22T01:08:01.8908458Z         "unit",
2026-06-22T01:08:01.8908567Z         "int"
2026-06-22T01:08:01.8908652Z       ],
2026-06-22T01:08:01.8908758Z       "stages": {
2026-06-22T01:08:01.8908857Z         "doc": {
2026-06-22T01:08:01.8909097Z           "complete": false,
2026-06-22T01:08:01.8909210Z           "evidence": []
2026-06-22T01:08:01.8909310Z         },
2026-06-22T01:08:01.8909421Z         "impl": {
2026-06-22T01:08:01.8909524Z           "complete": true,
2026-06-22T01:08:01.8909649Z           "evidence": [
2026-06-22T01:08:01.8909750Z             {
2026-06-22T01:08:01.8909910Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.8910025Z               "line": 33
2026-06-22T01:08:01.8910128Z             },
2026-06-22T01:08:01.8910232Z             {
2026-06-22T01:08:01.8910489Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8910599Z               "line": 68
2026-06-22T01:08:01.8910705Z             },
2026-06-22T01:08:01.8910814Z             {
2026-06-22T01:08:01.8910962Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8911067Z               "line": 111
2026-06-22T01:08:01.8911176Z             },
2026-06-22T01:08:01.8911272Z             {
2026-06-22T01:08:01.8911424Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8911533Z               "line": 462
2026-06-22T01:08:01.8911635Z             },
2026-06-22T01:08:01.8911834Z             {
2026-06-22T01:08:01.8911987Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8912091Z               "line": 711
2026-06-22T01:08:01.8912197Z             },
2026-06-22T01:08:01.8912302Z             {
2026-06-22T01:08:01.8912440Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8912550Z               "line": 725
2026-06-22T01:08:01.8912650Z             },
2026-06-22T01:08:01.8912744Z             {
2026-06-22T01:08:01.8912887Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.8912995Z               "line": 132
2026-06-22T01:08:01.8913099Z             },
2026-06-22T01:08:01.8913199Z             {
2026-06-22T01:08:01.8913352Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8913461Z               "line": 26
2026-06-22T01:08:01.8913567Z             },
2026-06-22T01:08:01.8913672Z             {
2026-06-22T01:08:01.8913810Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8913924Z               "line": 97
2026-06-22T01:08:01.8914033Z             },
2026-06-22T01:08:01.8914143Z             {
2026-06-22T01:08:01.8914282Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8914391Z               "line": 119
2026-06-22T01:08:01.8914493Z             },
2026-06-22T01:08:01.8914596Z             {
2026-06-22T01:08:01.8914739Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8914840Z               "line": 82
2026-06-22T01:08:01.8914949Z             },
2026-06-22T01:08:01.8915054Z             {
2026-06-22T01:08:01.8915198Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8915301Z               "line": 111
2026-06-22T01:08:01.8915405Z             },
2026-06-22T01:08:01.8915506Z             {
2026-06-22T01:08:01.8915646Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8915757Z               "line": 232
2026-06-22T01:08:01.8915862Z             },
2026-06-22T01:08:01.8915966Z             {
2026-06-22T01:08:01.8916105Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8916220Z               "line": 245
2026-06-22T01:08:01.8916328Z             },
2026-06-22T01:08:01.8916429Z             {
2026-06-22T01:08:01.8916568Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8916686Z               "line": 4665
2026-06-22T01:08:01.8916796Z             }
2026-06-22T01:08:01.8916901Z           ]
2026-06-22T01:08:01.8917001Z         },
2026-06-22T01:08:01.8917111Z         "int": {
2026-06-22T01:08:01.8917226Z           "complete": true,
2026-06-22T01:08:01.8917340Z           "evidence": [
2026-06-22T01:08:01.8917445Z             {
2026-06-22T01:08:01.8917592Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T01:08:01.8917708Z               "line": 98
2026-06-22T01:08:01.8917807Z             },
2026-06-22T01:08:01.8917911Z             {
2026-06-22T01:08:01.8918061Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T01:08:01.8918182Z               "line": 140
2026-06-22T01:08:01.8918287Z             }
2026-06-22T01:08:01.8918388Z           ]
2026-06-22T01:08:01.8918488Z         },
2026-06-22T01:08:01.8918597Z         "unit": {
2026-06-22T01:08:01.8918717Z           "complete": true,
2026-06-22T01:08:01.8918821Z           "evidence": [
2026-06-22T01:08:01.8919094Z             {
2026-06-22T01:08:01.8919260Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.8919366Z               "line": 178
2026-06-22T01:08:01.8919465Z             },
2026-06-22T01:08:01.8919565Z             {
2026-06-22T01:08:01.8919718Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.8919827Z               "line": 242
2026-06-22T01:08:01.8919933Z             },
2026-06-22T01:08:01.8920037Z             {
2026-06-22T01:08:01.8920190Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8920301Z               "line": 1079
2026-06-22T01:08:01.8920503Z             },
2026-06-22T01:08:01.8920609Z             {
2026-06-22T01:08:01.8920764Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8920873Z               "line": 1109
2026-06-22T01:08:01.8920979Z             },
2026-06-22T01:08:01.8921073Z             {
2026-06-22T01:08:01.8921226Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T01:08:01.8921346Z               "line": 1129
2026-06-22T01:08:01.8921450Z             },
2026-06-22T01:08:01.8921551Z             {
2026-06-22T01:08:01.8921707Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T01:08:01.8921818Z               "line": 602
2026-06-22T01:08:01.8921918Z             },
2026-06-22T01:08:01.8922017Z             {
2026-06-22T01:08:01.8922161Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8922275Z               "line": 148
2026-06-22T01:08:01.8922375Z             },
2026-06-22T01:08:01.8922476Z             {
2026-06-22T01:08:01.8922627Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8922742Z               "line": 169
2026-06-22T01:08:01.8922849Z             },
2026-06-22T01:08:01.8922947Z             {
2026-06-22T01:08:01.8923097Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8923201Z               "line": 181
2026-06-22T01:08:01.8923309Z             },
2026-06-22T01:08:01.8923414Z             {
2026-06-22T01:08:01.8923550Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T01:08:01.8923669Z               "line": 202
2026-06-22T01:08:01.8923769Z             },
2026-06-22T01:08:01.8923870Z             {
2026-06-22T01:08:01.8924011Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8924109Z               "line": 375
2026-06-22T01:08:01.8924213Z             },
2026-06-22T01:08:01.8924317Z             {
2026-06-22T01:08:01.8924466Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.8924570Z               "line": 407
2026-06-22T01:08:01.8924675Z             },
2026-06-22T01:08:01.8924776Z             {
2026-06-22T01:08:01.8924908Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8925028Z               "line": 10052
2026-06-22T01:08:01.8925128Z             }
2026-06-22T01:08:01.8925233Z           ]
2026-06-22T01:08:01.8925334Z         }
2026-06-22T01:08:01.8925443Z       }
2026-06-22T01:08:01.8925542Z     },
2026-06-22T01:08:01.8925644Z     {
2026-06-22T01:08:01.8925758Z       "id": "REQ-MESH-5",
2026-06-22T01:08:01.8927165Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-22T01:08:01.8927305Z       "requiredStages": [
2026-06-22T01:08:01.8927409Z         "impl",
2026-06-22T01:08:01.8927513Z         "unit"
2026-06-22T01:08:01.8927619Z       ],
2026-06-22T01:08:01.8927723Z       "stages": {
2026-06-22T01:08:01.8927833Z         "doc": {
2026-06-22T01:08:01.8927939Z           "complete": false,
2026-06-22T01:08:01.8928171Z           "evidence": []
2026-06-22T01:08:01.8928277Z         },
2026-06-22T01:08:01.8928386Z         "impl": {
2026-06-22T01:08:01.8928506Z           "complete": true,
2026-06-22T01:08:01.8928611Z           "evidence": [
2026-06-22T01:08:01.8928714Z             {
2026-06-22T01:08:01.8928866Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.8929062Z               "line": 61
2026-06-22T01:08:01.8929162Z             },
2026-06-22T01:08:01.8929259Z             {
2026-06-22T01:08:01.8929414Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.8929516Z               "line": 109
2026-06-22T01:08:01.8929715Z             },
2026-06-22T01:08:01.8929815Z             {
2026-06-22T01:08:01.8929959Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.8930077Z               "line": 104
2026-06-22T01:08:01.8930179Z             },
2026-06-22T01:08:01.8930283Z             {
2026-06-22T01:08:01.8930431Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.8930541Z               "line": 105
2026-06-22T01:08:01.8930644Z             },
2026-06-22T01:08:01.8930741Z             {
2026-06-22T01:08:01.8930894Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8930992Z               "line": 85
2026-06-22T01:08:01.8931097Z             },
2026-06-22T01:08:01.8931197Z             {
2026-06-22T01:08:01.8931357Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8931457Z               "line": 250
2026-06-22T01:08:01.8931559Z             },
2026-06-22T01:08:01.8931667Z             {
2026-06-22T01:08:01.8931816Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8931934Z               "line": 314
2026-06-22T01:08:01.8932029Z             },
2026-06-22T01:08:01.8932126Z             {
2026-06-22T01:08:01.8932277Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8932378Z               "line": 767
2026-06-22T01:08:01.8932492Z             },
2026-06-22T01:08:01.8932582Z             {
2026-06-22T01:08:01.8932717Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.8932826Z               "line": 101
2026-06-22T01:08:01.8932930Z             },
2026-06-22T01:08:01.8933032Z             {
2026-06-22T01:08:01.8933164Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8933283Z               "line": 193
2026-06-22T01:08:01.8933385Z             }
2026-06-22T01:08:01.8933488Z           ]
2026-06-22T01:08:01.8933589Z         },
2026-06-22T01:08:01.8933690Z         "int": {
2026-06-22T01:08:01.8933803Z           "complete": false,
2026-06-22T01:08:01.8933912Z           "evidence": []
2026-06-22T01:08:01.8934017Z         },
2026-06-22T01:08:01.8934125Z         "unit": {
2026-06-22T01:08:01.8934234Z           "complete": true,
2026-06-22T01:08:01.8934339Z           "evidence": [
2026-06-22T01:08:01.8934444Z             {
2026-06-22T01:08:01.8934605Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.8934716Z               "line": 1009
2026-06-22T01:08:01.8934824Z             },
2026-06-22T01:08:01.8934920Z             {
2026-06-22T01:08:01.8935064Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T01:08:01.8935168Z               "line": 462
2026-06-22T01:08:01.8935274Z             }
2026-06-22T01:08:01.8935378Z           ]
2026-06-22T01:08:01.8935478Z         }
2026-06-22T01:08:01.8935584Z       }
2026-06-22T01:08:01.8935679Z     },
2026-06-22T01:08:01.8935778Z     {
2026-06-22T01:08:01.8935894Z       "id": "REQ-MESH-6",
2026-06-22T01:08:01.8937133Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-22T01:08:01.8937377Z       "requiredStages": [
2026-06-22T01:08:01.8937482Z         "impl",
2026-06-22T01:08:01.8937592Z         "unit"
2026-06-22T01:08:01.8937692Z       ],
2026-06-22T01:08:01.8937802Z       "stages": {
2026-06-22T01:08:01.8937907Z         "doc": {
2026-06-22T01:08:01.8938021Z           "complete": false,
2026-06-22T01:08:01.8938126Z           "evidence": []
2026-06-22T01:08:01.8938227Z         },
2026-06-22T01:08:01.8938322Z         "impl": {
2026-06-22T01:08:01.8938431Z           "complete": true,
2026-06-22T01:08:01.8938542Z           "evidence": [
2026-06-22T01:08:01.8938641Z             {
2026-06-22T01:08:01.8938866Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8939037Z               "line": 4181
2026-06-22T01:08:01.8939143Z             }
2026-06-22T01:08:01.8939251Z           ]
2026-06-22T01:08:01.8939350Z         },
2026-06-22T01:08:01.8939461Z         "int": {
2026-06-22T01:08:01.8939580Z           "complete": false,
2026-06-22T01:08:01.8939679Z           "evidence": []
2026-06-22T01:08:01.8939785Z         },
2026-06-22T01:08:01.8939885Z         "unit": {
2026-06-22T01:08:01.8939998Z           "complete": true,
2026-06-22T01:08:01.8940109Z           "evidence": [
2026-06-22T01:08:01.8940219Z             {
2026-06-22T01:08:01.8940347Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8940453Z               "line": 10602
2026-06-22T01:08:01.8940557Z             },
2026-06-22T01:08:01.8940657Z             {
2026-06-22T01:08:01.8940786Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8940896Z               "line": 10629
2026-06-22T01:08:01.8941005Z             },
2026-06-22T01:08:01.8941111Z             {
2026-06-22T01:08:01.8941234Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8941339Z               "line": 10653
2026-06-22T01:08:01.8941444Z             }
2026-06-22T01:08:01.8941543Z           ]
2026-06-22T01:08:01.8941642Z         }
2026-06-22T01:08:01.8941743Z       }
2026-06-22T01:08:01.8941855Z     },
2026-06-22T01:08:01.8941941Z     {
2026-06-22T01:08:01.8942066Z       "id": "REQ-MIGRATE-1",
2026-06-22T01:08:01.8942265Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-22T01:08:01.8942390Z       "requiredStages": [],
2026-06-22T01:08:01.8942495Z       "stages": {
2026-06-22T01:08:01.8942603Z         "doc": {
2026-06-22T01:08:01.8942724Z           "complete": false,
2026-06-22T01:08:01.8942833Z           "evidence": []
2026-06-22T01:08:01.8942933Z         },
2026-06-22T01:08:01.8943038Z         "impl": {
2026-06-22T01:08:01.8943143Z           "complete": false,
2026-06-22T01:08:01.8943252Z           "evidence": []
2026-06-22T01:08:01.8943353Z         },
2026-06-22T01:08:01.8943462Z         "int": {
2026-06-22T01:08:01.8943644Z           "complete": false,
2026-06-22T01:08:01.8943757Z           "evidence": []
2026-06-22T01:08:01.8943853Z         },
2026-06-22T01:08:01.8943950Z         "unit": {
2026-06-22T01:08:01.8944058Z           "complete": false,
2026-06-22T01:08:01.8944168Z           "evidence": []
2026-06-22T01:08:01.8944284Z         }
2026-06-22T01:08:01.8944373Z       }
2026-06-22T01:08:01.8944477Z     },
2026-06-22T01:08:01.8944567Z     {
2026-06-22T01:08:01.8944690Z       "id": "REQ-MSG-1",
2026-06-22T01:08:01.8945156Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-22T01:08:01.8945267Z       "requiredStages": [
2026-06-22T01:08:01.8945376Z         "impl",
2026-06-22T01:08:01.8945480Z         "unit",
2026-06-22T01:08:01.8945591Z         "int"
2026-06-22T01:08:01.8945695Z       ],
2026-06-22T01:08:01.8945790Z       "stages": {
2026-06-22T01:08:01.8945892Z         "doc": {
2026-06-22T01:08:01.8946005Z           "complete": false,
2026-06-22T01:08:01.8946124Z           "evidence": []
2026-06-22T01:08:01.8946225Z         },
2026-06-22T01:08:01.8946334Z         "impl": {
2026-06-22T01:08:01.8946554Z           "complete": true,
2026-06-22T01:08:01.8946668Z           "evidence": [
2026-06-22T01:08:01.8946911Z             {
2026-06-22T01:08:01.8947048Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8947158Z               "line": 28
2026-06-22T01:08:01.8947261Z             },
2026-06-22T01:08:01.8947365Z             {
2026-06-22T01:08:01.8947504Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8947608Z               "line": 94
2026-06-22T01:08:01.8947718Z             },
2026-06-22T01:08:01.8947819Z             {
2026-06-22T01:08:01.8947966Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8948171Z               "line": 127
2026-06-22T01:08:01.8948280Z             },
2026-06-22T01:08:01.8948386Z             {
2026-06-22T01:08:01.8948529Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8948634Z               "line": 149
2026-06-22T01:08:01.8948730Z             },
2026-06-22T01:08:01.8948834Z             {
2026-06-22T01:08:01.8949035Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8949148Z               "line": 174
2026-06-22T01:08:01.8949253Z             },
2026-06-22T01:08:01.8949360Z             {
2026-06-22T01:08:01.8949506Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:08:01.8949602Z               "line": 18
2026-06-22T01:08:01.8949699Z             },
2026-06-22T01:08:01.8949797Z             {
2026-06-22T01:08:01.8949939Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.8950040Z               "line": 13
2026-06-22T01:08:01.8950149Z             },
2026-06-22T01:08:01.8950248Z             {
2026-06-22T01:08:01.8950383Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.8950492Z               "line": 62
2026-06-22T01:08:01.8950597Z             },
2026-06-22T01:08:01.8950708Z             {
2026-06-22T01:08:01.8950826Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.8950945Z               "line": 13
2026-06-22T01:08:01.8951055Z             }
2026-06-22T01:08:01.8951150Z           ]
2026-06-22T01:08:01.8951251Z         },
2026-06-22T01:08:01.8951356Z         "int": {
2026-06-22T01:08:01.8951470Z           "complete": true,
2026-06-22T01:08:01.8951580Z           "evidence": [
2026-06-22T01:08:01.8951685Z             {
2026-06-22T01:08:01.8951856Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:08:01.8951967Z               "line": 9
2026-06-22T01:08:01.8952070Z             },
2026-06-22T01:08:01.8952175Z             {
2026-06-22T01:08:01.8952331Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:08:01.8952444Z               "line": 56
2026-06-22T01:08:01.8952544Z             },
2026-06-22T01:08:01.8952645Z             {
2026-06-22T01:08:01.8952796Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:08:01.8952907Z               "line": 113
2026-06-22T01:08:01.8953007Z             }
2026-06-22T01:08:01.8953111Z           ]
2026-06-22T01:08:01.8953208Z         },
2026-06-22T01:08:01.8953303Z         "unit": {
2026-06-22T01:08:01.8953421Z           "complete": true,
2026-06-22T01:08:01.8953518Z           "evidence": [
2026-06-22T01:08:01.8953632Z             {
2026-06-22T01:08:01.8953764Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8953875Z               "line": 203
2026-06-22T01:08:01.8953970Z             },
2026-06-22T01:08:01.8954069Z             {
2026-06-22T01:08:01.8954214Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8954322Z               "line": 232
2026-06-22T01:08:01.8954428Z             },
2026-06-22T01:08:01.8954529Z             {
2026-06-22T01:08:01.8954661Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8954762Z               "line": 277
2026-06-22T01:08:01.8954872Z             },
2026-06-22T01:08:01.8954980Z             {
2026-06-22T01:08:01.8955113Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8955334Z               "line": 300
2026-06-22T01:08:01.8955435Z             },
2026-06-22T01:08:01.8955540Z             {
2026-06-22T01:08:01.8955678Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T01:08:01.8955789Z               "line": 325
2026-06-22T01:08:01.8955899Z             },
2026-06-22T01:08:01.8956002Z             {
2026-06-22T01:08:01.8956151Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:08:01.8956251Z               "line": 204
2026-06-22T01:08:01.8956355Z             },
2026-06-22T01:08:01.8956461Z             {
2026-06-22T01:08:01.8956594Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:08:01.8956805Z               "line": 237
2026-06-22T01:08:01.8956904Z             },
2026-06-22T01:08:01.8957009Z             {
2026-06-22T01:08:01.8957143Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:08:01.8957252Z               "line": 251
2026-06-22T01:08:01.8957353Z             },
2026-06-22T01:08:01.8957458Z             {
2026-06-22T01:08:01.8957594Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:08:01.8957699Z               "line": 263
2026-06-22T01:08:01.8957807Z             },
2026-06-22T01:08:01.8957892Z             {
2026-06-22T01:08:01.8958035Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.8958141Z               "line": 162
2026-06-22T01:08:01.8958245Z             },
2026-06-22T01:08:01.8958346Z             {
2026-06-22T01:08:01.8958465Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T01:08:01.8958579Z               "line": 242
2026-06-22T01:08:01.8958680Z             },
2026-06-22T01:08:01.8958794Z             {
2026-06-22T01:08:01.8958927Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.8959118Z               "line": 134
2026-06-22T01:08:01.8959222Z             },
2026-06-22T01:08:01.8959319Z             {
2026-06-22T01:08:01.8959461Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.8959556Z               "line": 153
2026-06-22T01:08:01.8959662Z             }
2026-06-22T01:08:01.8959756Z           ]
2026-06-22T01:08:01.8959862Z         }
2026-06-22T01:08:01.8959968Z       }
2026-06-22T01:08:01.8960071Z     },
2026-06-22T01:08:01.8960167Z     {
2026-06-22T01:08:01.8960273Z       "id": "REQ-MSG-2",
2026-06-22T01:08:01.8960576Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-22T01:08:01.8960691Z       "requiredStages": [
2026-06-22T01:08:01.8960785Z         "impl",
2026-06-22T01:08:01.8960886Z         "unit"
2026-06-22T01:08:01.8960986Z       ],
2026-06-22T01:08:01.8961090Z       "stages": {
2026-06-22T01:08:01.8961196Z         "doc": {
2026-06-22T01:08:01.8961320Z           "complete": false,
2026-06-22T01:08:01.8961434Z           "evidence": []
2026-06-22T01:08:01.8961535Z         },
2026-06-22T01:08:01.8961644Z         "impl": {
2026-06-22T01:08:01.8961744Z           "complete": true,
2026-06-22T01:08:01.8961845Z           "evidence": [
2026-06-22T01:08:01.8961944Z             {
2026-06-22T01:08:01.8962082Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8962194Z               "line": 11
2026-06-22T01:08:01.8962297Z             },
2026-06-22T01:08:01.8962402Z             {
2026-06-22T01:08:01.8962532Z               "path": "crates/spt/src/main.rs",
2026-06-22T01:08:01.8962645Z               "line": 8
2026-06-22T01:08:01.8962744Z             }
2026-06-22T01:08:01.8962849Z           ]
2026-06-22T01:08:01.8962957Z         },
2026-06-22T01:08:01.8963061Z         "int": {
2026-06-22T01:08:01.8963181Z           "complete": false,
2026-06-22T01:08:01.8963286Z           "evidence": []
2026-06-22T01:08:01.8963390Z         },
2026-06-22T01:08:01.8963491Z         "unit": {
2026-06-22T01:08:01.8963615Z           "complete": true,
2026-06-22T01:08:01.8963719Z           "evidence": [
2026-06-22T01:08:01.8963811Z             {
2026-06-22T01:08:01.8963938Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8964168Z               "line": 7717
2026-06-22T01:08:01.8964273Z             },
2026-06-22T01:08:01.8964373Z             {
2026-06-22T01:08:01.8964501Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8964616Z               "line": 7759
2026-06-22T01:08:01.8964707Z             },
2026-06-22T01:08:01.8964812Z             {
2026-06-22T01:08:01.8964940Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8965051Z               "line": 7808
2026-06-22T01:08:01.8965150Z             },
2026-06-22T01:08:01.8965255Z             {
2026-06-22T01:08:01.8965390Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8965493Z               "line": 7831
2026-06-22T01:08:01.8965688Z             },
2026-06-22T01:08:01.8965791Z             {
2026-06-22T01:08:01.8965923Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8966033Z               "line": 9807
2026-06-22T01:08:01.8966139Z             },
2026-06-22T01:08:01.8966247Z             {
2026-06-22T01:08:01.8966378Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8966487Z               "line": 9816
2026-06-22T01:08:01.8966591Z             },
2026-06-22T01:08:01.8966687Z             {
2026-06-22T01:08:01.8966816Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8966925Z               "line": 9830
2026-06-22T01:08:01.8967031Z             }
2026-06-22T01:08:01.8967131Z           ]
2026-06-22T01:08:01.8967240Z         }
2026-06-22T01:08:01.8967336Z       }
2026-06-22T01:08:01.8967439Z     },
2026-06-22T01:08:01.8967540Z     {
2026-06-22T01:08:01.8967651Z       "id": "REQ-MSG-3",
2026-06-22T01:08:01.8968064Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-22T01:08:01.8968187Z       "requiredStages": [
2026-06-22T01:08:01.8968292Z         "impl",
2026-06-22T01:08:01.8968400Z         "unit",
2026-06-22T01:08:01.8968495Z         "int"
2026-06-22T01:08:01.8968586Z       ],
2026-06-22T01:08:01.8968701Z       "stages": {
2026-06-22T01:08:01.8968800Z         "doc": {
2026-06-22T01:08:01.8968906Z           "complete": false,
2026-06-22T01:08:01.8969086Z           "evidence": []
2026-06-22T01:08:01.8969182Z         },
2026-06-22T01:08:01.8969292Z         "impl": {
2026-06-22T01:08:01.8969396Z           "complete": true,
2026-06-22T01:08:01.8969512Z           "evidence": [
2026-06-22T01:08:01.8969612Z             {
2026-06-22T01:08:01.8969759Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T01:08:01.8969874Z               "line": 19
2026-06-22T01:08:01.8969964Z             },
2026-06-22T01:08:01.8970068Z             {
2026-06-22T01:08:01.8970203Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8970311Z               "line": 21
2026-06-22T01:08:01.8970417Z             },
2026-06-22T01:08:01.8970518Z             {
2026-06-22T01:08:01.8970655Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8970761Z               "line": 48
2026-06-22T01:08:01.8970871Z             },
2026-06-22T01:08:01.8970978Z             {
2026-06-22T01:08:01.8971112Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8971228Z               "line": 174
2026-06-22T01:08:01.8971326Z             }
2026-06-22T01:08:01.8971432Z           ]
2026-06-22T01:08:01.8971527Z         },
2026-06-22T01:08:01.8971626Z         "int": {
2026-06-22T01:08:01.8971737Z           "complete": true,
2026-06-22T01:08:01.8971842Z           "evidence": [
2026-06-22T01:08:01.8971941Z             {
2026-06-22T01:08:01.8972105Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:08:01.8972223Z               "line": 10
2026-06-22T01:08:01.8972323Z             },
2026-06-22T01:08:01.8972429Z             {
2026-06-22T01:08:01.8972595Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T01:08:01.8972706Z               "line": 56
2026-06-22T01:08:01.8972801Z             }
2026-06-22T01:08:01.8972900Z           ]
2026-06-22T01:08:01.8973102Z         },
2026-06-22T01:08:01.8973195Z         "unit": {
2026-06-22T01:08:01.8973309Z           "complete": true,
2026-06-22T01:08:01.8973414Z           "evidence": [
2026-06-22T01:08:01.8973517Z             {
2026-06-22T01:08:01.8973650Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8973751Z               "line": 228
2026-06-22T01:08:01.8973860Z             },
2026-06-22T01:08:01.8973960Z             {
2026-06-22T01:08:01.8974099Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8974217Z               "line": 247
2026-06-22T01:08:01.8974318Z             },
2026-06-22T01:08:01.8974522Z             {
2026-06-22T01:08:01.8974648Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.8974762Z               "line": 270
2026-06-22T01:08:01.8974856Z             }
2026-06-22T01:08:01.8974957Z           ]
2026-06-22T01:08:01.8975066Z         }
2026-06-22T01:08:01.8975166Z       }
2026-06-22T01:08:01.8975277Z     },
2026-06-22T01:08:01.8975376Z     {
2026-06-22T01:08:01.8975495Z       "id": "REQ-MSG-4",
2026-06-22T01:08:01.8976342Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-22T01:08:01.8976464Z       "requiredStages": [
2026-06-22T01:08:01.8976575Z         "impl",
2026-06-22T01:08:01.8976666Z         "unit",
2026-06-22T01:08:01.8976770Z         "int"
2026-06-22T01:08:01.8976870Z       ],
2026-06-22T01:08:01.8976971Z       "stages": {
2026-06-22T01:08:01.8977085Z         "doc": {
2026-06-22T01:08:01.8977210Z           "complete": false,
2026-06-22T01:08:01.8977314Z           "evidence": []
2026-06-22T01:08:01.8977404Z         },
2026-06-22T01:08:01.8980430Z         "impl": {
2026-06-22T01:08:01.8980582Z           "complete": true,
2026-06-22T01:08:01.8980701Z           "evidence": [
2026-06-22T01:08:01.8980829Z             {
2026-06-22T01:08:01.8980982Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8981093Z               "line": 19
2026-06-22T01:08:01.8981196Z             },
2026-06-22T01:08:01.8981302Z             {
2026-06-22T01:08:01.8981441Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8981558Z               "line": 46
2026-06-22T01:08:01.8981663Z             },
2026-06-22T01:08:01.8981768Z             {
2026-06-22T01:08:01.8981915Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.8982030Z               "line": 532
2026-06-22T01:08:01.8982136Z             },
2026-06-22T01:08:01.8982239Z             {
2026-06-22T01:08:01.8982374Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8982483Z               "line": 3110
2026-06-22T01:08:01.8982588Z             }
2026-06-22T01:08:01.8982689Z           ]
2026-06-22T01:08:01.8982793Z         },
2026-06-22T01:08:01.8982898Z         "int": {
2026-06-22T01:08:01.8983009Z           "complete": true,
2026-06-22T01:08:01.8983112Z           "evidence": [
2026-06-22T01:08:01.8983217Z             {
2026-06-22T01:08:01.8983375Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:08:01.8983479Z               "line": 98
2026-06-22T01:08:01.8983585Z             },
2026-06-22T01:08:01.8983690Z             {
2026-06-22T01:08:01.8983840Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T01:08:01.8983946Z               "line": 128
2026-06-22T01:08:01.8984044Z             }
2026-06-22T01:08:01.8984144Z           ]
2026-06-22T01:08:01.8984243Z         },
2026-06-22T01:08:01.8984345Z         "unit": {
2026-06-22T01:08:01.8984463Z           "complete": true,
2026-06-22T01:08:01.8984568Z           "evidence": [
2026-06-22T01:08:01.8984678Z             {
2026-06-22T01:08:01.8984801Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8984917Z               "line": 68
2026-06-22T01:08:01.8985026Z             },
2026-06-22T01:08:01.8985251Z             {
2026-06-22T01:08:01.8985388Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8985498Z               "line": 79
2026-06-22T01:08:01.8985603Z             },
2026-06-22T01:08:01.8985712Z             {
2026-06-22T01:08:01.8985847Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8985960Z               "line": 90
2026-06-22T01:08:01.8986055Z             },
2026-06-22T01:08:01.8986162Z             {
2026-06-22T01:08:01.8986284Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8986399Z               "line": 151
2026-06-22T01:08:01.8986501Z             }
2026-06-22T01:08:01.8986698Z           ]
2026-06-22T01:08:01.8986808Z         }
2026-06-22T01:08:01.8986907Z       }
2026-06-22T01:08:01.8987006Z     },
2026-06-22T01:08:01.8987101Z     {
2026-06-22T01:08:01.8987212Z       "id": "REQ-MSG-5",
2026-06-22T01:08:01.8987983Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-22T01:08:01.8988094Z       "requiredStages": [
2026-06-22T01:08:01.8988203Z         "doc",
2026-06-22T01:08:01.8988308Z         "impl",
2026-06-22T01:08:01.8988414Z         "unit"
2026-06-22T01:08:01.8988517Z       ],
2026-06-22T01:08:01.8988622Z       "stages": {
2026-06-22T01:08:01.8988729Z         "doc": {
2026-06-22T01:08:01.8988846Z           "complete": true,
2026-06-22T01:08:01.8989029Z           "evidence": [
2026-06-22T01:08:01.8989129Z             {
2026-06-22T01:08:01.8989255Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.8989360Z               "line": 231
2026-06-22T01:08:01.8989469Z             }
2026-06-22T01:08:01.8989572Z           ]
2026-06-22T01:08:01.8989673Z         },
2026-06-22T01:08:01.8989783Z         "impl": {
2026-06-22T01:08:01.8989887Z           "complete": true,
2026-06-22T01:08:01.8989997Z           "evidence": [
2026-06-22T01:08:01.8990098Z             {
2026-06-22T01:08:01.8990244Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.8990360Z               "line": 60
2026-06-22T01:08:01.8990465Z             },
2026-06-22T01:08:01.8990559Z             {
2026-06-22T01:08:01.8990703Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8990813Z               "line": 126
2026-06-22T01:08:01.8990913Z             },
2026-06-22T01:08:01.8991018Z             {
2026-06-22T01:08:01.8991161Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8991261Z               "line": 135
2026-06-22T01:08:01.8991366Z             },
2026-06-22T01:08:01.8991471Z             {
2026-06-22T01:08:01.8991605Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8991709Z               "line": 149
2026-06-22T01:08:01.8991814Z             },
2026-06-22T01:08:01.8991920Z             {
2026-06-22T01:08:01.8992061Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8992175Z               "line": 178
2026-06-22T01:08:01.8992275Z             },
2026-06-22T01:08:01.8992376Z             {
2026-06-22T01:08:01.8992509Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8992624Z               "line": 2802
2026-06-22T01:08:01.8992729Z             }
2026-06-22T01:08:01.8992818Z           ]
2026-06-22T01:08:01.8992920Z         },
2026-06-22T01:08:01.8993025Z         "int": {
2026-06-22T01:08:01.8993133Z           "complete": true,
2026-06-22T01:08:01.8993239Z           "evidence": [
2026-06-22T01:08:01.8993338Z             {
2026-06-22T01:08:01.8993496Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T01:08:01.8993607Z               "line": 19
2026-06-22T01:08:01.8993706Z             }
2026-06-22T01:08:01.8993806Z           ]
2026-06-22T01:08:01.8993902Z         },
2026-06-22T01:08:01.8994005Z         "unit": {
2026-06-22T01:08:01.8994121Z           "complete": true,
2026-06-22T01:08:01.8994339Z           "evidence": [
2026-06-22T01:08:01.8994438Z             {
2026-06-22T01:08:01.8994572Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.8994675Z               "line": 192
2026-06-22T01:08:01.8994775Z             },
2026-06-22T01:08:01.8994876Z             {
2026-06-22T01:08:01.8995032Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:08:01.8995147Z               "line": 154
2026-06-22T01:08:01.8995243Z             },
2026-06-22T01:08:01.8995347Z             {
2026-06-22T01:08:01.8995472Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.8995582Z               "line": 122
2026-06-22T01:08:01.8995801Z             },
2026-06-22T01:08:01.8995901Z             {
2026-06-22T01:08:01.8996038Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8996135Z               "line": 452
2026-06-22T01:08:01.8996240Z             },
2026-06-22T01:08:01.8996339Z             {
2026-06-22T01:08:01.8996488Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8996592Z               "line": 501
2026-06-22T01:08:01.8996688Z             },
2026-06-22T01:08:01.8996784Z             {
2026-06-22T01:08:01.8996921Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8997022Z               "line": 517
2026-06-22T01:08:01.8997118Z             },
2026-06-22T01:08:01.8997216Z             {
2026-06-22T01:08:01.8997354Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.8997458Z               "line": 536
2026-06-22T01:08:01.8997561Z             },
2026-06-22T01:08:01.8997662Z             {
2026-06-22T01:08:01.8997796Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.8997904Z               "line": 7660
2026-06-22T01:08:01.8998010Z             }
2026-06-22T01:08:01.8998115Z           ]
2026-06-22T01:08:01.8998209Z         }
2026-06-22T01:08:01.8998315Z       }
2026-06-22T01:08:01.8998405Z     },
2026-06-22T01:08:01.8998510Z     {
2026-06-22T01:08:01.8998625Z       "id": "REQ-MSG-6",
2026-06-22T01:08:01.9000372Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-22T01:08:01.9000494Z       "requiredStages": [
2026-06-22T01:08:01.9000605Z         "doc",
2026-06-22T01:08:01.9000715Z         "impl",
2026-06-22T01:08:01.9000819Z         "unit"
2026-06-22T01:08:01.9000920Z       ],
2026-06-22T01:08:01.9001025Z       "stages": {
2026-06-22T01:08:01.9001124Z         "doc": {
2026-06-22T01:08:01.9001235Z           "complete": true,
2026-06-22T01:08:01.9001344Z           "evidence": [
2026-06-22T01:08:01.9001448Z             {
2026-06-22T01:08:01.9001569Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9001678Z               "line": 234
2026-06-22T01:08:01.9001778Z             }
2026-06-22T01:08:01.9001884Z           ]
2026-06-22T01:08:01.9001987Z         },
2026-06-22T01:08:01.9002087Z         "impl": {
2026-06-22T01:08:01.9002199Z           "complete": true,
2026-06-22T01:08:01.9002302Z           "evidence": [
2026-06-22T01:08:01.9002398Z             {
2026-06-22T01:08:01.9002561Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9002673Z               "line": 177
2026-06-22T01:08:01.9002773Z             },
2026-06-22T01:08:01.9002875Z             {
2026-06-22T01:08:01.9003040Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9003146Z               "line": 428
2026-06-22T01:08:01.9003246Z             },
2026-06-22T01:08:01.9003354Z             {
2026-06-22T01:08:01.9003509Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9003723Z               "line": 451
2026-06-22T01:08:01.9003828Z             },
2026-06-22T01:08:01.9003933Z             {
2026-06-22T01:08:01.9004071Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.9004181Z               "line": 89
2026-06-22T01:08:01.9004280Z             },
2026-06-22T01:08:01.9004376Z             {
2026-06-22T01:08:01.9004524Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9004633Z               "line": 155
2026-06-22T01:08:01.9004739Z             }
2026-06-22T01:08:01.9004847Z           ]
2026-06-22T01:08:01.9004942Z         },
2026-06-22T01:08:01.9005146Z         "int": {
2026-06-22T01:08:01.9005259Z           "complete": false,
2026-06-22T01:08:01.9005369Z           "evidence": []
2026-06-22T01:08:01.9005470Z         },
2026-06-22T01:08:01.9005573Z         "unit": {
2026-06-22T01:08:01.9005693Z           "complete": true,
2026-06-22T01:08:01.9005798Z           "evidence": [
2026-06-22T01:08:01.9005897Z             {
2026-06-22T01:08:01.9006047Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9006161Z               "line": 1746
2026-06-22T01:08:01.9006260Z             },
2026-06-22T01:08:01.9006357Z             {
2026-06-22T01:08:01.9006490Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.9006599Z               "line": 219
2026-06-22T01:08:01.9006705Z             }
2026-06-22T01:08:01.9006805Z           ]
2026-06-22T01:08:01.9006909Z         }
2026-06-22T01:08:01.9007010Z       }
2026-06-22T01:08:01.9007099Z     },
2026-06-22T01:08:01.9007195Z     {
2026-06-22T01:08:01.9007320Z       "id": "REQ-MSG-ENVELOPE",
2026-06-22T01:08:01.9011064Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-22T01:08:01.9011242Z       "requiredStages": [
2026-06-22T01:08:01.9011356Z         "doc",
2026-06-22T01:08:01.9011457Z         "impl",
2026-06-22T01:08:01.9011566Z         "unit",
2026-06-22T01:08:01.9011665Z         "int"
2026-06-22T01:08:01.9011767Z       ],
2026-06-22T01:08:01.9011871Z       "stages": {
2026-06-22T01:08:01.9011966Z         "doc": {
2026-06-22T01:08:01.9012081Z           "complete": true,
2026-06-22T01:08:01.9012186Z           "evidence": [
2026-06-22T01:08:01.9012285Z             {
2026-06-22T01:08:01.9012543Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T01:08:01.9012648Z               "line": 47
2026-06-22T01:08:01.9012750Z             }
2026-06-22T01:08:01.9012872Z           ]
2026-06-22T01:08:01.9012972Z         },
2026-06-22T01:08:01.9013074Z         "impl": {
2026-06-22T01:08:01.9013181Z           "complete": true,
2026-06-22T01:08:01.9013280Z           "evidence": [
2026-06-22T01:08:01.9013391Z             {
2026-06-22T01:08:01.9013529Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.9013740Z               "line": 20
2026-06-22T01:08:01.9013849Z             },
2026-06-22T01:08:01.9013948Z             {
2026-06-22T01:08:01.9014083Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.9014187Z               "line": 33
2026-06-22T01:08:01.9014292Z             },
2026-06-22T01:08:01.9014397Z             {
2026-06-22T01:08:01.9014521Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.9014626Z               "line": 47
2026-06-22T01:08:01.9014731Z             },
2026-06-22T01:08:01.9014831Z             {
2026-06-22T01:08:01.9014956Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.9015165Z               "line": 58
2026-06-22T01:08:01.9015270Z             },
2026-06-22T01:08:01.9015365Z             {
2026-06-22T01:08:01.9015502Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9015607Z               "line": 14
2026-06-22T01:08:01.9015716Z             },
2026-06-22T01:08:01.9015814Z             {
2026-06-22T01:08:01.9015944Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9016059Z               "line": 27
2026-06-22T01:08:01.9016157Z             },
2026-06-22T01:08:01.9016263Z             {
2026-06-22T01:08:01.9016392Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9016515Z               "line": 40
2026-06-22T01:08:01.9016607Z             },
2026-06-22T01:08:01.9016707Z             {
2026-06-22T01:08:01.9016840Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.9016945Z               "line": 92
2026-06-22T01:08:01.9017045Z             },
2026-06-22T01:08:01.9017150Z             {
2026-06-22T01:08:01.9017302Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9017407Z               "line": 143
2026-06-22T01:08:01.9017513Z             },
2026-06-22T01:08:01.9017617Z             {
2026-06-22T01:08:01.9017755Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9017861Z               "line": 216
2026-06-22T01:08:01.9017965Z             },
2026-06-22T01:08:01.9018065Z             {
2026-06-22T01:08:01.9018195Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9018303Z               "line": 533
2026-06-22T01:08:01.9018402Z             },
2026-06-22T01:08:01.9018507Z             {
2026-06-22T01:08:01.9018644Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T01:08:01.9018748Z               "line": 78
2026-06-22T01:08:01.9018849Z             },
2026-06-22T01:08:01.9019024Z             {
2026-06-22T01:08:01.9019155Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9019269Z               "line": 3111
2026-06-22T01:08:01.9019368Z             }
2026-06-22T01:08:01.9019464Z           ]
2026-06-22T01:08:01.9019564Z         },
2026-06-22T01:08:01.9019668Z         "int": {
2026-06-22T01:08:01.9019784Z           "complete": true,
2026-06-22T01:08:01.9019897Z           "evidence": [
2026-06-22T01:08:01.9019997Z             {
2026-06-22T01:08:01.9020156Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-22T01:08:01.9020255Z               "line": 15
2026-06-22T01:08:01.9020360Z             }
2026-06-22T01:08:01.9020461Z           ]
2026-06-22T01:08:01.9020555Z         },
2026-06-22T01:08:01.9020656Z         "unit": {
2026-06-22T01:08:01.9020772Z           "complete": true,
2026-06-22T01:08:01.9020884Z           "evidence": [
2026-06-22T01:08:01.9020983Z             {
2026-06-22T01:08:01.9021117Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.9021220Z               "line": 102
2026-06-22T01:08:01.9021329Z             },
2026-06-22T01:08:01.9021425Z             {
2026-06-22T01:08:01.9021567Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T01:08:01.9021668Z               "line": 137
2026-06-22T01:08:01.9021773Z             },
2026-06-22T01:08:01.9021863Z             {
2026-06-22T01:08:01.9021997Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9022216Z               "line": 98
2026-06-22T01:08:01.9022308Z             },
2026-06-22T01:08:01.9022407Z             {
2026-06-22T01:08:01.9022540Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9022646Z               "line": 106
2026-06-22T01:08:01.9022750Z             },
2026-06-22T01:08:01.9022855Z             {
2026-06-22T01:08:01.9022985Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9023093Z               "line": 113
2026-06-22T01:08:01.9023199Z             },
2026-06-22T01:08:01.9023300Z             {
2026-06-22T01:08:01.9023436Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T01:08:01.9023547Z               "line": 122
2026-06-22T01:08:01.9023751Z             }
2026-06-22T01:08:01.9023855Z           ]
2026-06-22T01:08:01.9023956Z         }
2026-06-22T01:08:01.9024052Z       }
2026-06-22T01:08:01.9024151Z     },
2026-06-22T01:08:01.9024252Z     {
2026-06-22T01:08:01.9024381Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-22T01:08:01.9029390Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-22T01:08:01.9029584Z       "requiredStages": [
2026-06-22T01:08:01.9029691Z         "doc",
2026-06-22T01:08:01.9029800Z         "impl",
2026-06-22T01:08:01.9029895Z         "unit",
2026-06-22T01:08:01.9030001Z         "int"
2026-06-22T01:08:01.9030096Z       ],
2026-06-22T01:08:01.9030200Z       "stages": {
2026-06-22T01:08:01.9030320Z         "doc": {
2026-06-22T01:08:01.9030439Z           "complete": true,
2026-06-22T01:08:01.9030543Z           "evidence": [
2026-06-22T01:08:01.9030654Z             {
2026-06-22T01:08:01.9030825Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T01:08:01.9030930Z               "line": 277
2026-06-22T01:08:01.9031036Z             },
2026-06-22T01:08:01.9031129Z             {
2026-06-22T01:08:01.9031250Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.9031360Z               "line": 198
2026-06-22T01:08:01.9031458Z             }
2026-06-22T01:08:01.9031557Z           ]
2026-06-22T01:08:01.9031649Z         },
2026-06-22T01:08:01.9031761Z         "impl": {
2026-06-22T01:08:01.9031870Z           "complete": true,
2026-06-22T01:08:01.9031990Z           "evidence": [
2026-06-22T01:08:01.9032090Z             {
2026-06-22T01:08:01.9032238Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9032357Z               "line": 1126
2026-06-22T01:08:01.9032553Z             },
2026-06-22T01:08:01.9032657Z             {
2026-06-22T01:08:01.9032819Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9032930Z               "line": 23
2026-06-22T01:08:01.9033029Z             },
2026-06-22T01:08:01.9033129Z             {
2026-06-22T01:08:01.9033287Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9033392Z               "line": 91
2026-06-22T01:08:01.9033502Z             },
2026-06-22T01:08:01.9033602Z             {
2026-06-22T01:08:01.9033744Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9033855Z               "line": 239
2026-06-22T01:08:01.9034059Z             },
2026-06-22T01:08:01.9034160Z             {
2026-06-22T01:08:01.9034306Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9034424Z               "line": 287
2026-06-22T01:08:01.9034526Z             },
2026-06-22T01:08:01.9034626Z             {
2026-06-22T01:08:01.9034783Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9034888Z               "line": 311
2026-06-22T01:08:01.9034997Z             },
2026-06-22T01:08:01.9035098Z             {
2026-06-22T01:08:01.9035251Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9035355Z               "line": 60
2026-06-22T01:08:01.9035466Z             },
2026-06-22T01:08:01.9035565Z             {
2026-06-22T01:08:01.9035707Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9035819Z               "line": 889
2026-06-22T01:08:01.9035918Z             }
2026-06-22T01:08:01.9036022Z           ]
2026-06-22T01:08:01.9036124Z         },
2026-06-22T01:08:01.9036232Z         "int": {
2026-06-22T01:08:01.9036352Z           "complete": true,
2026-06-22T01:08:01.9036462Z           "evidence": [
2026-06-22T01:08:01.9036566Z             {
2026-06-22T01:08:01.9036742Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.9036854Z               "line": 1119
2026-06-22T01:08:01.9036958Z             },
2026-06-22T01:08:01.9037059Z             {
2026-06-22T01:08:01.9037231Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.9037340Z               "line": 1224
2026-06-22T01:08:01.9037455Z             },
2026-06-22T01:08:01.9037550Z             {
2026-06-22T01:08:01.9037718Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.9037831Z               "line": 1292
2026-06-22T01:08:01.9037935Z             },
2026-06-22T01:08:01.9038037Z             {
2026-06-22T01:08:01.9038198Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T01:08:01.9038323Z               "line": 1385
2026-06-22T01:08:01.9038422Z             }
2026-06-22T01:08:01.9038527Z           ]
2026-06-22T01:08:01.9038633Z         },
2026-06-22T01:08:01.9038737Z         "unit": {
2026-06-22T01:08:01.9038856Z           "complete": true,
2026-06-22T01:08:01.9039024Z           "evidence": [
2026-06-22T01:08:01.9039118Z             {
2026-06-22T01:08:01.9039272Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.9039386Z               "line": 270
2026-06-22T01:08:01.9039489Z             },
2026-06-22T01:08:01.9039589Z             {
2026-06-22T01:08:01.9039750Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9039863Z               "line": 350
2026-06-22T01:08:01.9039969Z             },
2026-06-22T01:08:01.9040074Z             {
2026-06-22T01:08:01.9040226Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9040332Z               "line": 381
2026-06-22T01:08:01.9040441Z             },
2026-06-22T01:08:01.9040546Z             {
2026-06-22T01:08:01.9040699Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9040802Z               "line": 411
2026-06-22T01:08:01.9040904Z             },
2026-06-22T01:08:01.9041009Z             {
2026-06-22T01:08:01.9041262Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T01:08:01.9041375Z               "line": 440
2026-06-22T01:08:01.9041476Z             },
2026-06-22T01:08:01.9041572Z             {
2026-06-22T01:08:01.9041724Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9041830Z               "line": 1181
2026-06-22T01:08:01.9041939Z             }
2026-06-22T01:08:01.9042042Z           ]
2026-06-22T01:08:01.9042132Z         }
2026-06-22T01:08:01.9042228Z       }
2026-06-22T01:08:01.9042326Z     },
2026-06-22T01:08:01.9042426Z     {
2026-06-22T01:08:01.9042541Z       "id": "REQ-NET-1",
2026-06-22T01:08:01.9042759Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-22T01:08:01.9042979Z       "requiredStages": [
2026-06-22T01:08:01.9043079Z         "impl",
2026-06-22T01:08:01.9043185Z         "unit",
2026-06-22T01:08:01.9043280Z         "int"
2026-06-22T01:08:01.9043384Z       ],
2026-06-22T01:08:01.9043490Z       "stages": {
2026-06-22T01:08:01.9043589Z         "doc": {
2026-06-22T01:08:01.9043786Z           "complete": false,
2026-06-22T01:08:01.9043890Z           "evidence": []
2026-06-22T01:08:01.9043994Z         },
2026-06-22T01:08:01.9044100Z         "impl": {
2026-06-22T01:08:01.9044209Z           "complete": true,
2026-06-22T01:08:01.9044319Z           "evidence": [
2026-06-22T01:08:01.9044425Z             {
2026-06-22T01:08:01.9044581Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9044692Z               "line": 54
2026-06-22T01:08:01.9044792Z             },
2026-06-22T01:08:01.9044890Z             {
2026-06-22T01:08:01.9045043Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9045149Z               "line": 594
2026-06-22T01:08:01.9045262Z             },
2026-06-22T01:08:01.9045367Z             {
2026-06-22T01:08:01.9045501Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T01:08:01.9045624Z               "line": 130
2026-06-22T01:08:01.9045726Z             },
2026-06-22T01:08:01.9045830Z             {
2026-06-22T01:08:01.9045977Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9046092Z               "line": 97
2026-06-22T01:08:01.9046192Z             },
2026-06-22T01:08:01.9046292Z             {
2026-06-22T01:08:01.9046444Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9046554Z               "line": 159
2026-06-22T01:08:01.9046665Z             },
2026-06-22T01:08:01.9046764Z             {
2026-06-22T01:08:01.9047159Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9047264Z               "line": 175
2026-06-22T01:08:01.9047368Z             },
2026-06-22T01:08:01.9047471Z             {
2026-06-22T01:08:01.9047614Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9047715Z               "line": 190
2026-06-22T01:08:01.9047829Z             },
2026-06-22T01:08:01.9047919Z             {
2026-06-22T01:08:01.9048067Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9048176Z               "line": 271
2026-06-22T01:08:01.9048283Z             },
2026-06-22T01:08:01.9048387Z             {
2026-06-22T01:08:01.9048535Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9048649Z               "line": 306
2026-06-22T01:08:01.9048749Z             },
2026-06-22T01:08:01.9048854Z             {
2026-06-22T01:08:01.9049054Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9049164Z               "line": 312
2026-06-22T01:08:01.9049269Z             },
2026-06-22T01:08:01.9049369Z             {
2026-06-22T01:08:01.9049527Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9049636Z               "line": 318
2026-06-22T01:08:01.9049741Z             },
2026-06-22T01:08:01.9049847Z             {
2026-06-22T01:08:01.9049983Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9050097Z               "line": 334
2026-06-22T01:08:01.9050305Z             },
2026-06-22T01:08:01.9050414Z             {
2026-06-22T01:08:01.9050558Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9050663Z               "line": 354
2026-06-22T01:08:01.9050767Z             },
2026-06-22T01:08:01.9050873Z             {
2026-06-22T01:08:01.9051015Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:08:01.9051121Z               "line": 35
2026-06-22T01:08:01.9051221Z             },
2026-06-22T01:08:01.9051325Z             {
2026-06-22T01:08:01.9051474Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:08:01.9051583Z               "line": 85
2026-06-22T01:08:01.9051780Z             },
2026-06-22T01:08:01.9051883Z             {
2026-06-22T01:08:01.9052031Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.9052146Z               "line": 138
2026-06-22T01:08:01.9052250Z             },
2026-06-22T01:08:01.9052356Z             {
2026-06-22T01:08:01.9052480Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9052597Z               "line": 2953
2026-06-22T01:08:01.9052697Z             },
2026-06-22T01:08:01.9052802Z             {
2026-06-22T01:08:01.9052947Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9053048Z               "line": 17
2026-06-22T01:08:01.9053139Z             }
2026-06-22T01:08:01.9053244Z           ]
2026-06-22T01:08:01.9053353Z         },
2026-06-22T01:08:01.9053454Z         "int": {
2026-06-22T01:08:01.9053572Z           "complete": true,
2026-06-22T01:08:01.9053683Z           "evidence": [
2026-06-22T01:08:01.9053778Z             {
2026-06-22T01:08:01.9053939Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9054050Z               "line": 341
2026-06-22T01:08:01.9054159Z             },
2026-06-22T01:08:01.9054254Z             {
2026-06-22T01:08:01.9054407Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9054512Z               "line": 675
2026-06-22T01:08:01.9054622Z             },
2026-06-22T01:08:01.9054727Z             {
2026-06-22T01:08:01.9054874Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9054980Z               "line": 973
2026-06-22T01:08:01.9055084Z             }
2026-06-22T01:08:01.9055184Z           ]
2026-06-22T01:08:01.9055295Z         },
2026-06-22T01:08:01.9055399Z         "unit": {
2026-06-22T01:08:01.9055521Z           "complete": true,
2026-06-22T01:08:01.9055627Z           "evidence": [
2026-06-22T01:08:01.9055728Z             {
2026-06-22T01:08:01.9055884Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9055999Z               "line": 651
2026-06-22T01:08:01.9056108Z             },
2026-06-22T01:08:01.9056213Z             {
2026-06-22T01:08:01.9056371Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9056480Z               "line": 686
2026-06-22T01:08:01.9056581Z             },
2026-06-22T01:08:01.9056685Z             {
2026-06-22T01:08:01.9056833Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9056953Z               "line": 940
2026-06-22T01:08:01.9057058Z             },
2026-06-22T01:08:01.9057162Z             {
2026-06-22T01:08:01.9057310Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T01:08:01.9057419Z               "line": 201
2026-06-22T01:08:01.9057526Z             },
2026-06-22T01:08:01.9057634Z             {
2026-06-22T01:08:01.9057776Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9057876Z               "line": 442
2026-06-22T01:08:01.9057975Z             },
2026-06-22T01:08:01.9058065Z             {
2026-06-22T01:08:01.9058213Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9058332Z               "line": 456
2026-06-22T01:08:01.9058427Z             },
2026-06-22T01:08:01.9058533Z             {
2026-06-22T01:08:01.9058674Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9058862Z               "line": 475
2026-06-22T01:08:01.9059042Z             },
2026-06-22T01:08:01.9059143Z             {
2026-06-22T01:08:01.9059295Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:08:01.9059404Z               "line": 120
2026-06-22T01:08:01.9059506Z             },
2026-06-22T01:08:01.9059605Z             {
2026-06-22T01:08:01.9059754Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T01:08:01.9059862Z               "line": 163
2026-06-22T01:08:01.9059972Z             },
2026-06-22T01:08:01.9060078Z             {
2026-06-22T01:08:01.9060210Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T01:08:01.9060441Z               "line": 530
2026-06-22T01:08:01.9060543Z             },
2026-06-22T01:08:01.9060643Z             {
2026-06-22T01:08:01.9060768Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9060879Z               "line": 616
2026-06-22T01:08:01.9060983Z             },
2026-06-22T01:08:01.9061090Z             {
2026-06-22T01:08:01.9061227Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9061337Z               "line": 1006
2026-06-22T01:08:01.9061443Z             }
2026-06-22T01:08:01.9061546Z           ]
2026-06-22T01:08:01.9061647Z         }
2026-06-22T01:08:01.9061757Z       }
2026-06-22T01:08:01.9061857Z     },
2026-06-22T01:08:01.9061962Z     {
2026-06-22T01:08:01.9062063Z       "id": "REQ-NET-2",
2026-06-22T01:08:01.9062271Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-22T01:08:01.9062391Z       "requiredStages": [
2026-06-22T01:08:01.9062496Z         "impl"
2026-06-22T01:08:01.9062601Z       ],
2026-06-22T01:08:01.9062711Z       "stages": {
2026-06-22T01:08:01.9062815Z         "doc": {
2026-06-22T01:08:01.9062931Z           "complete": false,
2026-06-22T01:08:01.9063040Z           "evidence": []
2026-06-22T01:08:01.9063139Z         },
2026-06-22T01:08:01.9063243Z         "impl": {
2026-06-22T01:08:01.9063362Z           "complete": true,
2026-06-22T01:08:01.9063475Z           "evidence": [
2026-06-22T01:08:01.9063565Z             {
2026-06-22T01:08:01.9063714Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.9063827Z               "line": 57
2026-06-22T01:08:01.9063923Z             },
2026-06-22T01:08:01.9064024Z             {
2026-06-22T01:08:01.9064180Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9064286Z               "line": 71
2026-06-22T01:08:01.9064395Z             },
2026-06-22T01:08:01.9064499Z             {
2026-06-22T01:08:01.9064653Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9064767Z               "line": 81
2026-06-22T01:08:01.9064862Z             },
2026-06-22T01:08:01.9064972Z             {
2026-06-22T01:08:01.9065115Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9065226Z               "line": 159
2026-06-22T01:08:01.9065330Z             },
2026-06-22T01:08:01.9065430Z             {
2026-06-22T01:08:01.9065583Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9065692Z               "line": 175
2026-06-22T01:08:01.9065798Z             },
2026-06-22T01:08:01.9065893Z             {
2026-06-22T01:08:01.9066039Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T01:08:01.9066148Z               "line": 190
2026-06-22T01:08:01.9066254Z             }
2026-06-22T01:08:01.9066363Z           ]
2026-06-22T01:08:01.9066463Z         },
2026-06-22T01:08:01.9066565Z         "int": {
2026-06-22T01:08:01.9066683Z           "complete": false,
2026-06-22T01:08:01.9066798Z           "evidence": []
2026-06-22T01:08:01.9069941Z         },
2026-06-22T01:08:01.9070080Z         "unit": {
2026-06-22T01:08:01.9070208Z           "complete": true,
2026-06-22T01:08:01.9070319Z           "evidence": [
2026-06-22T01:08:01.9070428Z             {
2026-06-22T01:08:01.9070585Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.9070695Z               "line": 402
2026-06-22T01:08:01.9070953Z             }
2026-06-22T01:08:01.9071053Z           ]
2026-06-22T01:08:01.9071156Z         }
2026-06-22T01:08:01.9071256Z       }
2026-06-22T01:08:01.9071361Z     },
2026-06-22T01:08:01.9071458Z     {
2026-06-22T01:08:01.9071573Z       "id": "REQ-NET-3",
2026-06-22T01:08:01.9071792Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-22T01:08:01.9071912Z       "requiredStages": [
2026-06-22T01:08:01.9072012Z         "impl",
2026-06-22T01:08:01.9072111Z         "unit"
2026-06-22T01:08:01.9072212Z       ],
2026-06-22T01:08:01.9072317Z       "stages": {
2026-06-22T01:08:01.9072426Z         "doc": {
2026-06-22T01:08:01.9072646Z           "complete": false,
2026-06-22T01:08:01.9072755Z           "evidence": []
2026-06-22T01:08:01.9072856Z         },
2026-06-22T01:08:01.9072952Z         "impl": {
2026-06-22T01:08:01.9073061Z           "complete": true,
2026-06-22T01:08:01.9073171Z           "evidence": [
2026-06-22T01:08:01.9073272Z             {
2026-06-22T01:08:01.9073428Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.9073539Z               "line": 39
2026-06-22T01:08:01.9073647Z             },
2026-06-22T01:08:01.9073751Z             {
2026-06-22T01:08:01.9073904Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.9074016Z               "line": 182
2026-06-22T01:08:01.9074120Z             },
2026-06-22T01:08:01.9074221Z             {
2026-06-22T01:08:01.9074359Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T01:08:01.9074473Z               "line": 333
2026-06-22T01:08:01.9074574Z             },
2026-06-22T01:08:01.9074678Z             {
2026-06-22T01:08:01.9074828Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:08:01.9074937Z               "line": 36
2026-06-22T01:08:01.9075036Z             },
2026-06-22T01:08:01.9075142Z             {
2026-06-22T01:08:01.9075303Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9075413Z               "line": 158
2026-06-22T01:08:01.9075518Z             },
2026-06-22T01:08:01.9075613Z             {
2026-06-22T01:08:01.9075772Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9075885Z               "line": 238
2026-06-22T01:08:01.9075990Z             },
2026-06-22T01:08:01.9076096Z             {
2026-06-22T01:08:01.9076247Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9076358Z               "line": 259
2026-06-22T01:08:01.9076449Z             },
2026-06-22T01:08:01.9076556Z             {
2026-06-22T01:08:01.9076699Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9076819Z               "line": 317
2026-06-22T01:08:01.9076919Z             },
2026-06-22T01:08:01.9077023Z             {
2026-06-22T01:08:01.9077172Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9077276Z               "line": 336
2026-06-22T01:08:01.9077382Z             },
2026-06-22T01:08:01.9077486Z             {
2026-06-22T01:08:01.9077629Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9077739Z               "line": 374
2026-06-22T01:08:01.9077839Z             },
2026-06-22T01:08:01.9077939Z             {
2026-06-22T01:08:01.9078083Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9078197Z               "line": 419
2026-06-22T01:08:01.9078297Z             },
2026-06-22T01:08:01.9078402Z             {
2026-06-22T01:08:01.9078554Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9078661Z               "line": 432
2026-06-22T01:08:01.9079719Z             },
2026-06-22T01:08:01.9079823Z             {
2026-06-22T01:08:01.9079987Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.9080100Z               "line": 29
2026-06-22T01:08:01.9080201Z             },
2026-06-22T01:08:01.9080306Z             {
2026-06-22T01:08:01.9080453Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.9080687Z               "line": 72
2026-06-22T01:08:01.9080787Z             },
2026-06-22T01:08:01.9080889Z             {
2026-06-22T01:08:01.9081039Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.9081155Z               "line": 123
2026-06-22T01:08:01.9081260Z             }
2026-06-22T01:08:01.9081359Z           ]
2026-06-22T01:08:01.9081465Z         },
2026-06-22T01:08:01.9081561Z         "int": {
2026-06-22T01:08:01.9081678Z           "complete": false,
2026-06-22T01:08:01.9081782Z           "evidence": []
2026-06-22T01:08:01.9081878Z         },
2026-06-22T01:08:01.9081981Z         "unit": {
2026-06-22T01:08:01.9082190Z           "complete": true,
2026-06-22T01:08:01.9082292Z           "evidence": [
2026-06-22T01:08:01.9082390Z             {
2026-06-22T01:08:01.9082530Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:08:01.9082639Z               "line": 223
2026-06-22T01:08:01.9082743Z             },
2026-06-22T01:08:01.9082849Z             {
2026-06-22T01:08:01.9082996Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:08:01.9083106Z               "line": 351
2026-06-22T01:08:01.9083202Z             },
2026-06-22T01:08:01.9083306Z             {
2026-06-22T01:08:01.9083450Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T01:08:01.9083559Z               "line": 504
2026-06-22T01:08:01.9083663Z             },
2026-06-22T01:08:01.9083765Z             {
2026-06-22T01:08:01.9083902Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:08:01.9084007Z               "line": 93
2026-06-22T01:08:01.9084113Z             },
2026-06-22T01:08:01.9084221Z             {
2026-06-22T01:08:01.9084353Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T01:08:01.9084459Z               "line": 142
2026-06-22T01:08:01.9084562Z             },
2026-06-22T01:08:01.9084666Z             {
2026-06-22T01:08:01.9084810Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.9084924Z               "line": 315
2026-06-22T01:08:01.9085024Z             },
2026-06-22T01:08:01.9085125Z             {
2026-06-22T01:08:01.9085277Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.9085383Z               "line": 355
2026-06-22T01:08:01.9085487Z             },
2026-06-22T01:08:01.9085601Z             {
2026-06-22T01:08:01.9085731Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T01:08:01.9085835Z               "line": 494
2026-06-22T01:08:01.9085935Z             }
2026-06-22T01:08:01.9086046Z           ]
2026-06-22T01:08:01.9086145Z         }
2026-06-22T01:08:01.9086250Z       }
2026-06-22T01:08:01.9086361Z     },
2026-06-22T01:08:01.9086459Z     {
2026-06-22T01:08:01.9086583Z       "id": "REQ-NODE-IDENTITY",
2026-06-22T01:08:01.9086841Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-22T01:08:01.9086961Z       "requiredStages": [
2026-06-22T01:08:01.9087060Z         "impl",
2026-06-22T01:08:01.9087174Z         "unit"
2026-06-22T01:08:01.9087273Z       ],
2026-06-22T01:08:01.9087380Z       "stages": {
2026-06-22T01:08:01.9087483Z         "doc": {
2026-06-22T01:08:01.9087603Z           "complete": false,
2026-06-22T01:08:01.9087718Z           "evidence": []
2026-06-22T01:08:01.9087817Z         },
2026-06-22T01:08:01.9087928Z         "impl": {
2026-06-22T01:08:01.9088047Z           "complete": true,
2026-06-22T01:08:01.9088151Z           "evidence": [
2026-06-22T01:08:01.9088252Z             {
2026-06-22T01:08:01.9088390Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9088503Z               "line": 60
2026-06-22T01:08:01.9088600Z             },
2026-06-22T01:08:01.9088704Z             {
2026-06-22T01:08:01.9088848Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9089038Z               "line": 68
2026-06-22T01:08:01.9089138Z             },
2026-06-22T01:08:01.9089235Z             {
2026-06-22T01:08:01.9089372Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9089580Z               "line": 86
2026-06-22T01:08:01.9089683Z             },
2026-06-22T01:08:01.9089788Z             {
2026-06-22T01:08:01.9089927Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9090041Z               "line": 120
2026-06-22T01:08:01.9090136Z             },
2026-06-22T01:08:01.9090242Z             {
2026-06-22T01:08:01.9090370Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9090480Z               "line": 127
2026-06-22T01:08:01.9090580Z             },
2026-06-22T01:08:01.9090680Z             {
2026-06-22T01:08:01.9090824Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9091041Z               "line": 143
2026-06-22T01:08:01.9091153Z             },
2026-06-22T01:08:01.9091257Z             {
2026-06-22T01:08:01.9091395Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:08:01.9091506Z               "line": 16
2026-06-22T01:08:01.9091609Z             }
2026-06-22T01:08:01.9091715Z           ]
2026-06-22T01:08:01.9091815Z         },
2026-06-22T01:08:01.9091924Z         "int": {
2026-06-22T01:08:01.9092040Z           "complete": false,
2026-06-22T01:08:01.9092145Z           "evidence": []
2026-06-22T01:08:01.9092243Z         },
2026-06-22T01:08:01.9092347Z         "unit": {
2026-06-22T01:08:01.9092467Z           "complete": true,
2026-06-22T01:08:01.9092575Z           "evidence": [
2026-06-22T01:08:01.9092679Z             {
2026-06-22T01:08:01.9092822Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9092927Z               "line": 199
2026-06-22T01:08:01.9093037Z             },
2026-06-22T01:08:01.9093137Z             {
2026-06-22T01:08:01.9093274Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9093376Z               "line": 218
2026-06-22T01:08:01.9093475Z             },
2026-06-22T01:08:01.9093575Z             {
2026-06-22T01:08:01.9093719Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9093823Z               "line": 234
2026-06-22T01:08:01.9093923Z             },
2026-06-22T01:08:01.9094025Z             {
2026-06-22T01:08:01.9094156Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T01:08:01.9094272Z               "line": 256
2026-06-22T01:08:01.9094373Z             },
2026-06-22T01:08:01.9094467Z             {
2026-06-22T01:08:01.9094601Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:08:01.9094707Z               "line": 124
2026-06-22T01:08:01.9094810Z             },
2026-06-22T01:08:01.9094914Z             {
2026-06-22T01:08:01.9095052Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:08:01.9095155Z               "line": 140
2026-06-22T01:08:01.9095250Z             },
2026-06-22T01:08:01.9095351Z             {
2026-06-22T01:08:01.9095488Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T01:08:01.9095599Z               "line": 155
2026-06-22T01:08:01.9095699Z             }
2026-06-22T01:08:01.9095803Z           ]
2026-06-22T01:08:01.9095904Z         }
2026-06-22T01:08:01.9096000Z       }
2026-06-22T01:08:01.9096109Z     },
2026-06-22T01:08:01.9096204Z     {
2026-06-22T01:08:01.9096319Z       "id": "REQ-NOTIF-1",
2026-06-22T01:08:01.9096710Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-22T01:08:01.9096820Z       "requiredStages": [
2026-06-22T01:08:01.9096925Z         "impl",
2026-06-22T01:08:01.9097028Z         "unit",
2026-06-22T01:08:01.9097134Z         "int"
2026-06-22T01:08:01.9097231Z       ],
2026-06-22T01:08:01.9097343Z       "stages": {
2026-06-22T01:08:01.9097449Z         "doc": {
2026-06-22T01:08:01.9097565Z           "complete": false,
2026-06-22T01:08:01.9097681Z           "evidence": []
2026-06-22T01:08:01.9097767Z         },
2026-06-22T01:08:01.9097872Z         "impl": {
2026-06-22T01:08:01.9097978Z           "complete": true,
2026-06-22T01:08:01.9098158Z           "evidence": [
2026-06-22T01:08:01.9098263Z             {
2026-06-22T01:08:01.9098411Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9098517Z               "line": 514
2026-06-22T01:08:01.9098621Z             },
2026-06-22T01:08:01.9098725Z             {
2026-06-22T01:08:01.9098865Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9099040Z               "line": 30
2026-06-22T01:08:01.9099146Z             },
2026-06-22T01:08:01.9099250Z             {
2026-06-22T01:08:01.9099393Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9099504Z               "line": 69
2026-06-22T01:08:01.9099703Z             },
2026-06-22T01:08:01.9099805Z             {
2026-06-22T01:08:01.9099936Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9100040Z               "line": 93
2026-06-22T01:08:01.9100145Z             },
2026-06-22T01:08:01.9100239Z             {
2026-06-22T01:08:01.9100377Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9100487Z               "line": 107
2026-06-22T01:08:01.9100587Z             },
2026-06-22T01:08:01.9100692Z             {
2026-06-22T01:08:01.9100830Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9100944Z               "line": 142
2026-06-22T01:08:01.9101045Z             },
2026-06-22T01:08:01.9101145Z             {
2026-06-22T01:08:01.9101282Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9101384Z               "line": 187
2026-06-22T01:08:01.9101488Z             },
2026-06-22T01:08:01.9101588Z             {
2026-06-22T01:08:01.9101722Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9101831Z               "line": 258
2026-06-22T01:08:01.9101926Z             },
2026-06-22T01:08:01.9102019Z             {
2026-06-22T01:08:01.9102150Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9102255Z               "line": 372
2026-06-22T01:08:01.9102362Z             },
2026-06-22T01:08:01.9102470Z             {
2026-06-22T01:08:01.9102595Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9102700Z               "line": 479
2026-06-22T01:08:01.9102808Z             },
2026-06-22T01:08:01.9102907Z             {
2026-06-22T01:08:01.9103050Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9103154Z               "line": 24
2026-06-22T01:08:01.9103258Z             },
2026-06-22T01:08:01.9103355Z             {
2026-06-22T01:08:01.9103492Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9103592Z               "line": 34
2026-06-22T01:08:01.9103698Z             },
2026-06-22T01:08:01.9103797Z             {
2026-06-22T01:08:01.9103941Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9104041Z               "line": 60
2026-06-22T01:08:01.9104150Z             },
2026-06-22T01:08:01.9104251Z             {
2026-06-22T01:08:01.9104393Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9104508Z               "line": 82
2026-06-22T01:08:01.9104613Z             },
2026-06-22T01:08:01.9104717Z             {
2026-06-22T01:08:01.9104856Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9104966Z               "line": 94
2026-06-22T01:08:01.9105065Z             },
2026-06-22T01:08:01.9105166Z             {
2026-06-22T01:08:01.9105305Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.9105408Z               "line": 96
2026-06-22T01:08:01.9105517Z             },
2026-06-22T01:08:01.9105608Z             {
2026-06-22T01:08:01.9105767Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-22T01:08:01.9105873Z               "line": 44
2026-06-22T01:08:01.9105979Z             },
2026-06-22T01:08:01.9106077Z             {
2026-06-22T01:08:01.9106227Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:08:01.9106331Z               "line": 20
2026-06-22T01:08:01.9106546Z             },
2026-06-22T01:08:01.9106651Z             {
2026-06-22T01:08:01.9106794Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:08:01.9106908Z               "line": 30
2026-06-22T01:08:01.9107007Z             },
2026-06-22T01:08:01.9107108Z             {
2026-06-22T01:08:01.9107246Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:08:01.9107355Z               "line": 50
2026-06-22T01:08:01.9107461Z             },
2026-06-22T01:08:01.9107561Z             {
2026-06-22T01:08:01.9107704Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9107815Z               "line": 28
2026-06-22T01:08:01.9107990Z             },
2026-06-22T01:08:01.9108101Z             {
2026-06-22T01:08:01.9108237Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9108351Z               "line": 126
2026-06-22T01:08:01.9108452Z             },
2026-06-22T01:08:01.9108547Z             {
2026-06-22T01:08:01.9108680Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9108786Z               "line": 161
2026-06-22T01:08:01.9108895Z             },
2026-06-22T01:08:01.9109067Z             {
2026-06-22T01:08:01.9109196Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9109300Z               "line": 202
2026-06-22T01:08:01.9109411Z             },
2026-06-22T01:08:01.9109505Z             {
2026-06-22T01:08:01.9109638Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9109749Z               "line": 213
2026-06-22T01:08:01.9109849Z             },
2026-06-22T01:08:01.9109949Z             {
2026-06-22T01:08:01.9110083Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9110192Z               "line": 238
2026-06-22T01:08:01.9110287Z             },
2026-06-22T01:08:01.9110393Z             {
2026-06-22T01:08:01.9110534Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9110634Z               "line": 261
2026-06-22T01:08:01.9110738Z             },
2026-06-22T01:08:01.9110837Z             {
2026-06-22T01:08:01.9110985Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9111095Z               "line": 86
2026-06-22T01:08:01.9111204Z             }
2026-06-22T01:08:01.9111300Z           ]
2026-06-22T01:08:01.9111405Z         },
2026-06-22T01:08:01.9111504Z         "int": {
2026-06-22T01:08:01.9111610Z           "complete": true,
2026-06-22T01:08:01.9111710Z           "evidence": [
2026-06-22T01:08:01.9111819Z             {
2026-06-22T01:08:01.9111991Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9112105Z               "line": 285
2026-06-22T01:08:01.9112205Z             },
2026-06-22T01:08:01.9112301Z             {
2026-06-22T01:08:01.9112434Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T01:08:01.9112540Z               "line": 145
2026-06-22T01:08:01.9112644Z             },
2026-06-22T01:08:01.9112749Z             {
2026-06-22T01:08:01.9112903Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9113011Z               "line": 684
2026-06-22T01:08:01.9113116Z             },
2026-06-22T01:08:01.9113218Z             {
2026-06-22T01:08:01.9113359Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9113472Z               "line": 1102
2026-06-22T01:08:01.9113573Z             }
2026-06-22T01:08:01.9113680Z           ]
2026-06-22T01:08:01.9113770Z         },
2026-06-22T01:08:01.9113881Z         "unit": {
2026-06-22T01:08:01.9113995Z           "complete": true,
2026-06-22T01:08:01.9114109Z           "evidence": [
2026-06-22T01:08:01.9114220Z             {
2026-06-22T01:08:01.9114352Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9114467Z               "line": 572
2026-06-22T01:08:01.9114572Z             },
2026-06-22T01:08:01.9114681Z             {
2026-06-22T01:08:01.9114826Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9114944Z               "line": 636
2026-06-22T01:08:01.9115145Z             },
2026-06-22T01:08:01.9115249Z             {
2026-06-22T01:08:01.9115397Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9115502Z               "line": 740
2026-06-22T01:08:01.9115611Z             },
2026-06-22T01:08:01.9115707Z             {
2026-06-22T01:08:01.9115855Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9115972Z               "line": 772
2026-06-22T01:08:01.9116073Z             },
2026-06-22T01:08:01.9116182Z             {
2026-06-22T01:08:01.9116323Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9116428Z               "line": 840
2026-06-22T01:08:01.9116623Z             },
2026-06-22T01:08:01.9116724Z             {
2026-06-22T01:08:01.9116868Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9116976Z               "line": 898
2026-06-22T01:08:01.9117077Z             },
2026-06-22T01:08:01.9117177Z             {
2026-06-22T01:08:01.9117320Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9117435Z               "line": 1173
2026-06-22T01:08:01.9117540Z             },
2026-06-22T01:08:01.9117644Z             {
2026-06-22T01:08:01.9117792Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9117911Z               "line": 157
2026-06-22T01:08:01.9118013Z             },
2026-06-22T01:08:01.9118121Z             {
2026-06-22T01:08:01.9118269Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9118380Z               "line": 250
2026-06-22T01:08:01.9118483Z             },
2026-06-22T01:08:01.9118584Z             {
2026-06-22T01:08:01.9118732Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T01:08:01.9118835Z               "line": 273
2026-06-22T01:08:01.9119027Z             },
2026-06-22T01:08:01.9119122Z             {
2026-06-22T01:08:01.9119269Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.9119398Z               "line": 355
2026-06-22T01:08:01.9119492Z             },
2026-06-22T01:08:01.9119599Z             {
2026-06-22T01:08:01.9119747Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T01:08:01.9119855Z               "line": 392
2026-06-22T01:08:01.9119961Z             },
2026-06-22T01:08:01.9120060Z             {
2026-06-22T01:08:01.9120208Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T01:08:01.9120319Z               "line": 131
2026-06-22T01:08:01.9120423Z             },
2026-06-22T01:08:01.9120523Z             {
2026-06-22T01:08:01.9120671Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:08:01.9120790Z               "line": 72
2026-06-22T01:08:01.9120882Z             },
2026-06-22T01:08:01.9120991Z             {
2026-06-22T01:08:01.9121132Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T01:08:01.9121247Z               "line": 97
2026-06-22T01:08:01.9121354Z             },
2026-06-22T01:08:01.9121463Z             {
2026-06-22T01:08:01.9121617Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9121730Z               "line": 379
2026-06-22T01:08:01.9121836Z             },
2026-06-22T01:08:01.9121936Z             {
2026-06-22T01:08:01.9122079Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9122194Z               "line": 417
2026-06-22T01:08:01.9122299Z             },
2026-06-22T01:08:01.9122398Z             {
2026-06-22T01:08:01.9122528Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9122647Z               "line": 433
2026-06-22T01:08:01.9122746Z             },
2026-06-22T01:08:01.9122852Z             {
2026-06-22T01:08:01.9122994Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9123100Z               "line": 472
2026-06-22T01:08:01.9123209Z             },
2026-06-22T01:08:01.9123309Z             {
2026-06-22T01:08:01.9123448Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9123652Z               "line": 489
2026-06-22T01:08:01.9123754Z             },
2026-06-22T01:08:01.9123844Z             {
2026-06-22T01:08:01.9123976Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9124090Z               "line": 517
2026-06-22T01:08:01.9124194Z             },
2026-06-22T01:08:01.9124293Z             {
2026-06-22T01:08:01.9124427Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T01:08:01.9124532Z               "line": 548
2026-06-22T01:08:01.9124636Z             },
2026-06-22T01:08:01.9124742Z             {
2026-06-22T01:08:01.9124889Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9125095Z               "line": 745
2026-06-22T01:08:01.9125199Z             }
2026-06-22T01:08:01.9125298Z           ]
2026-06-22T01:08:01.9125405Z         }
2026-06-22T01:08:01.9125509Z       }
2026-06-22T01:08:01.9125609Z     },
2026-06-22T01:08:01.9125720Z     {
2026-06-22T01:08:01.9125828Z       "id": "REQ-NOTIF-2",
2026-06-22T01:08:01.9126124Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-22T01:08:01.9126239Z       "requiredStages": [
2026-06-22T01:08:01.9126345Z         "doc",
2026-06-22T01:08:01.9126457Z         "impl",
2026-06-22T01:08:01.9126570Z         "unit",
2026-06-22T01:08:01.9126667Z         "int"
2026-06-22T01:08:01.9126770Z       ],
2026-06-22T01:08:01.9126883Z       "stages": {
2026-06-22T01:08:01.9126984Z         "doc": {
2026-06-22T01:08:01.9127108Z           "complete": true,
2026-06-22T01:08:01.9127212Z           "evidence": [
2026-06-22T01:08:01.9127318Z             {
2026-06-22T01:08:01.9127442Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9127551Z               "line": 509
2026-06-22T01:08:01.9127656Z             },
2026-06-22T01:08:01.9127761Z             {
2026-06-22T01:08:01.9127885Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.9127990Z               "line": 123
2026-06-22T01:08:01.9128100Z             }
2026-06-22T01:08:01.9128209Z           ]
2026-06-22T01:08:01.9128305Z         },
2026-06-22T01:08:01.9128414Z         "impl": {
2026-06-22T01:08:01.9128524Z           "complete": true,
2026-06-22T01:08:01.9128629Z           "evidence": [
2026-06-22T01:08:01.9128728Z             {
2026-06-22T01:08:01.9128873Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9129052Z               "line": 287
2026-06-22T01:08:01.9129149Z             },
2026-06-22T01:08:01.9129259Z             {
2026-06-22T01:08:01.9129395Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9129509Z               "line": 301
2026-06-22T01:08:01.9129611Z             },
2026-06-22T01:08:01.9129715Z             {
2026-06-22T01:08:01.9129854Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9129963Z               "line": 326
2026-06-22T01:08:01.9130067Z             },
2026-06-22T01:08:01.9130164Z             {
2026-06-22T01:08:01.9130302Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9130420Z               "line": 239
2026-06-22T01:08:01.9130516Z             },
2026-06-22T01:08:01.9130616Z             {
2026-06-22T01:08:01.9130759Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9130874Z               "line": 95
2026-06-22T01:08:01.9130974Z             },
2026-06-22T01:08:01.9131079Z             {
2026-06-22T01:08:01.9131203Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9131312Z               "line": 2225
2026-06-22T01:08:01.9131417Z             },
2026-06-22T01:08:01.9131513Z             {
2026-06-22T01:08:01.9131650Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9131759Z               "line": 2274
2026-06-22T01:08:01.9131864Z             },
2026-06-22T01:08:01.9131967Z             {
2026-06-22T01:08:01.9132100Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9132216Z               "line": 2353
2026-06-22T01:08:01.9132314Z             },
2026-06-22T01:08:01.9132411Z             {
2026-06-22T01:08:01.9132643Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9132759Z               "line": 2392
2026-06-22T01:08:01.9132864Z             }
2026-06-22T01:08:01.9132963Z           ]
2026-06-22T01:08:01.9133055Z         },
2026-06-22T01:08:01.9133159Z         "int": {
2026-06-22T01:08:01.9133277Z           "complete": true,
2026-06-22T01:08:01.9133384Z           "evidence": [
2026-06-22T01:08:01.9133487Z             {
2026-06-22T01:08:01.9133636Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9133742Z               "line": 810
2026-06-22T01:08:01.9133850Z             },
2026-06-22T01:08:01.9134076Z             {
2026-06-22T01:08:01.9134222Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9134333Z               "line": 1345
2026-06-22T01:08:01.9134428Z             }
2026-06-22T01:08:01.9134526Z           ]
2026-06-22T01:08:01.9134627Z         },
2026-06-22T01:08:01.9134736Z         "unit": {
2026-06-22T01:08:01.9134857Z           "complete": true,
2026-06-22T01:08:01.9134967Z           "evidence": [
2026-06-22T01:08:01.9135073Z             {
2026-06-22T01:08:01.9135210Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9135326Z               "line": 1022
2026-06-22T01:08:01.9135430Z             },
2026-06-22T01:08:01.9135525Z             {
2026-06-22T01:08:01.9135660Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9135769Z               "line": 1090
2026-06-22T01:08:01.9135873Z             },
2026-06-22T01:08:01.9135984Z             {
2026-06-22T01:08:01.9136121Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9136236Z               "line": 8210
2026-06-22T01:08:01.9136345Z             },
2026-06-22T01:08:01.9136436Z             {
2026-06-22T01:08:01.9136571Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9136674Z               "line": 8265
2026-06-22T01:08:01.9136779Z             }
2026-06-22T01:08:01.9136885Z           ]
2026-06-22T01:08:01.9136989Z         }
2026-06-22T01:08:01.9137093Z       }
2026-06-22T01:08:01.9137197Z     },
2026-06-22T01:08:01.9137302Z     {
2026-06-22T01:08:01.9137415Z       "id": "REQ-PAIR-1",
2026-06-22T01:08:01.9137544Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-22T01:08:01.9137663Z       "requiredStages": [
2026-06-22T01:08:01.9137772Z         "impl",
2026-06-22T01:08:01.9137874Z         "unit",
2026-06-22T01:08:01.9137978Z         "int"
2026-06-22T01:08:01.9138078Z       ],
2026-06-22T01:08:01.9138184Z       "stages": {
2026-06-22T01:08:01.9138293Z         "doc": {
2026-06-22T01:08:01.9138406Z           "complete": false,
2026-06-22T01:08:01.9138518Z           "evidence": []
2026-06-22T01:08:01.9138621Z         },
2026-06-22T01:08:01.9138726Z         "impl": {
2026-06-22T01:08:01.9138842Z           "complete": true,
2026-06-22T01:08:01.9139017Z           "evidence": [
2026-06-22T01:08:01.9139128Z             {
2026-06-22T01:08:01.9139293Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9139404Z               "line": 27
2026-06-22T01:08:01.9139509Z             },
2026-06-22T01:08:01.9139608Z             {
2026-06-22T01:08:01.9139767Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9139871Z               "line": 88
2026-06-22T01:08:01.9139979Z             },
2026-06-22T01:08:01.9140084Z             {
2026-06-22T01:08:01.9140232Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9140346Z               "line": 110
2026-06-22T01:08:01.9140447Z             },
2026-06-22T01:08:01.9140557Z             {
2026-06-22T01:08:01.9140704Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9140819Z               "line": 153
2026-06-22T01:08:01.9140923Z             },
2026-06-22T01:08:01.9141028Z             {
2026-06-22T01:08:01.9141181Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9141290Z               "line": 182
2026-06-22T01:08:01.9141500Z             },
2026-06-22T01:08:01.9141605Z             {
2026-06-22T01:08:01.9141768Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9141877Z               "line": 29
2026-06-22T01:08:01.9141982Z             },
2026-06-22T01:08:01.9142078Z             {
2026-06-22T01:08:01.9142234Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T01:08:01.9142343Z               "line": 31
2026-06-22T01:08:01.9142452Z             },
2026-06-22T01:08:01.9142546Z             {
2026-06-22T01:08:01.9142699Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9142903Z               "line": 44
2026-06-22T01:08:01.9143009Z             },
2026-06-22T01:08:01.9143100Z             {
2026-06-22T01:08:01.9143247Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9143358Z               "line": 171
2026-06-22T01:08:01.9143452Z             },
2026-06-22T01:08:01.9143542Z             {
2026-06-22T01:08:01.9143776Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9143890Z               "line": 376
2026-06-22T01:08:01.9143992Z             }
2026-06-22T01:08:01.9144091Z           ]
2026-06-22T01:08:01.9144196Z         },
2026-06-22T01:08:01.9144307Z         "int": {
2026-06-22T01:08:01.9144415Z           "complete": true,
2026-06-22T01:08:01.9144520Z           "evidence": [
2026-06-22T01:08:01.9144626Z             {
2026-06-22T01:08:01.9144764Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9144874Z               "line": 645
2026-06-22T01:08:01.9144979Z             },
2026-06-22T01:08:01.9145086Z             {
2026-06-22T01:08:01.9145234Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9145347Z               "line": 887
2026-06-22T01:08:01.9145451Z             }
2026-06-22T01:08:01.9145542Z           ]
2026-06-22T01:08:01.9145643Z         },
2026-06-22T01:08:01.9145751Z         "unit": {
2026-06-22T01:08:01.9149129Z           "complete": true,
2026-06-22T01:08:01.9149282Z           "evidence": [
2026-06-22T01:08:01.9149388Z             {
2026-06-22T01:08:01.9149567Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9149673Z               "line": 236
2026-06-22T01:08:01.9149782Z             },
2026-06-22T01:08:01.9149887Z             {
2026-06-22T01:08:01.9150055Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T01:08:01.9150168Z               "line": 349
2026-06-22T01:08:01.9150274Z             },
2026-06-22T01:08:01.9150375Z             {
2026-06-22T01:08:01.9150535Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9150654Z               "line": 194
2026-06-22T01:08:01.9150755Z             },
2026-06-22T01:08:01.9150849Z             {
2026-06-22T01:08:01.9151007Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9151107Z               "line": 216
2026-06-22T01:08:01.9151216Z             },
2026-06-22T01:08:01.9151318Z             {
2026-06-22T01:08:01.9151474Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9151593Z               "line": 230
2026-06-22T01:08:01.9151694Z             },
2026-06-22T01:08:01.9151798Z             {
2026-06-22T01:08:01.9151947Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9152056Z               "line": 242
2026-06-22T01:08:01.9152146Z             },
2026-06-22T01:08:01.9152238Z             {
2026-06-22T01:08:01.9152394Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9152494Z               "line": 256
2026-06-22T01:08:01.9152601Z             },
2026-06-22T01:08:01.9152704Z             {
2026-06-22T01:08:01.9152851Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9152960Z               "line": 270
2026-06-22T01:08:01.9153064Z             },
2026-06-22T01:08:01.9153168Z             {
2026-06-22T01:08:01.9153463Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9153569Z               "line": 277
2026-06-22T01:08:01.9153669Z             },
2026-06-22T01:08:01.9153768Z             {
2026-06-22T01:08:01.9153922Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T01:08:01.9154021Z               "line": 295
2026-06-22T01:08:01.9154122Z             },
2026-06-22T01:08:01.9154223Z             {
2026-06-22T01:08:01.9154384Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9154490Z               "line": 968
2026-06-22T01:08:01.9154584Z             },
2026-06-22T01:08:01.9154689Z             {
2026-06-22T01:08:01.9154933Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9155042Z               "line": 1051
2026-06-22T01:08:01.9155143Z             },
2026-06-22T01:08:01.9155247Z             {
2026-06-22T01:08:01.9155386Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9155501Z               "line": 1121
2026-06-22T01:08:01.9155604Z             },
2026-06-22T01:08:01.9155704Z             {
2026-06-22T01:08:01.9155856Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9155959Z               "line": 1182
2026-06-22T01:08:01.9156064Z             },
2026-06-22T01:08:01.9156160Z             {
2026-06-22T01:08:01.9156311Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9156422Z               "line": 1238
2026-06-22T01:08:01.9156527Z             },
2026-06-22T01:08:01.9156631Z             {
2026-06-22T01:08:01.9156780Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9156899Z               "line": 1457
2026-06-22T01:08:01.9157003Z             }
2026-06-22T01:08:01.9157109Z           ]
2026-06-22T01:08:01.9157218Z         }
2026-06-22T01:08:01.9157318Z       }
2026-06-22T01:08:01.9157419Z     },
2026-06-22T01:08:01.9157513Z     {
2026-06-22T01:08:01.9157633Z       "id": "REQ-PAIR-2",
2026-06-22T01:08:01.9157795Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-22T01:08:01.9157909Z       "requiredStages": [],
2026-06-22T01:08:01.9158015Z       "stages": {
2026-06-22T01:08:01.9158119Z         "doc": {
2026-06-22T01:08:01.9158242Z           "complete": false,
2026-06-22T01:08:01.9158351Z           "evidence": []
2026-06-22T01:08:01.9158451Z         },
2026-06-22T01:08:01.9158554Z         "impl": {
2026-06-22T01:08:01.9158678Z           "complete": false,
2026-06-22T01:08:01.9158784Z           "evidence": []
2026-06-22T01:08:01.9158888Z         },
2026-06-22T01:08:01.9159069Z         "int": {
2026-06-22T01:08:01.9159183Z           "complete": false,
2026-06-22T01:08:01.9159309Z           "evidence": []
2026-06-22T01:08:01.9159408Z         },
2026-06-22T01:08:01.9159522Z         "unit": {
2026-06-22T01:08:01.9159638Z           "complete": false,
2026-06-22T01:08:01.9159741Z           "evidence": []
2026-06-22T01:08:01.9159846Z         }
2026-06-22T01:08:01.9159948Z       }
2026-06-22T01:08:01.9160051Z     },
2026-06-22T01:08:01.9160137Z     {
2026-06-22T01:08:01.9160258Z       "id": "REQ-PAIR-3",
2026-06-22T01:08:01.9160438Z       "title": "Fetch current pairing code from any paired node",
2026-06-22T01:08:01.9160544Z       "requiredStages": [
2026-06-22T01:08:01.9160648Z         "impl",
2026-06-22T01:08:01.9160738Z         "unit"
2026-06-22T01:08:01.9160839Z       ],
2026-06-22T01:08:01.9160945Z       "stages": {
2026-06-22T01:08:01.9161047Z         "doc": {
2026-06-22T01:08:01.9161161Z           "complete": false,
2026-06-22T01:08:01.9161272Z           "evidence": []
2026-06-22T01:08:01.9161371Z         },
2026-06-22T01:08:01.9161481Z         "impl": {
2026-06-22T01:08:01.9161596Z           "complete": true,
2026-06-22T01:08:01.9161705Z           "evidence": [
2026-06-22T01:08:01.9161810Z             {
2026-06-22T01:08:01.9161949Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9162053Z               "line": 3259
2026-06-22T01:08:01.9162258Z             },
2026-06-22T01:08:01.9162353Z             {
2026-06-22T01:08:01.9162483Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9162592Z               "line": 3328
2026-06-22T01:08:01.9162702Z             },
2026-06-22T01:08:01.9162808Z             {
2026-06-22T01:08:01.9162926Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9163031Z               "line": 3709
2026-06-22T01:08:01.9163132Z             },
2026-06-22T01:08:01.9163231Z             {
2026-06-22T01:08:01.9163358Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9163464Z               "line": 4961
2026-06-22T01:08:01.9163562Z             }
2026-06-22T01:08:01.9163757Z           ]
2026-06-22T01:08:01.9163863Z         },
2026-06-22T01:08:01.9163967Z         "int": {
2026-06-22T01:08:01.9164081Z           "complete": false,
2026-06-22T01:08:01.9164182Z           "evidence": []
2026-06-22T01:08:01.9164281Z         },
2026-06-22T01:08:01.9164386Z         "unit": {
2026-06-22T01:08:01.9164501Z           "complete": true,
2026-06-22T01:08:01.9164610Z           "evidence": [
2026-06-22T01:08:01.9164711Z             {
2026-06-22T01:08:01.9164840Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9164949Z               "line": 9964
2026-06-22T01:08:01.9165050Z             },
2026-06-22T01:08:01.9165154Z             {
2026-06-22T01:08:01.9165273Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9165389Z               "line": 10179
2026-06-22T01:08:01.9165488Z             },
2026-06-22T01:08:01.9165593Z             {
2026-06-22T01:08:01.9165718Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9165840Z               "line": 10838
2026-06-22T01:08:01.9165946Z             },
2026-06-22T01:08:01.9166051Z             {
2026-06-22T01:08:01.9166179Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9166288Z               "line": 10857
2026-06-22T01:08:01.9166392Z             },
2026-06-22T01:08:01.9166491Z             {
2026-06-22T01:08:01.9166619Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9166735Z               "line": 10881
2026-06-22T01:08:01.9166829Z             },
2026-06-22T01:08:01.9166934Z             {
2026-06-22T01:08:01.9167054Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9167182Z               "line": 10900
2026-06-22T01:08:01.9167288Z             },
2026-06-22T01:08:01.9167392Z             {
2026-06-22T01:08:01.9167520Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9167626Z               "line": 10913
2026-06-22T01:08:01.9167735Z             },
2026-06-22T01:08:01.9167830Z             {
2026-06-22T01:08:01.9167965Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9168082Z               "line": 10922
2026-06-22T01:08:01.9168183Z             }
2026-06-22T01:08:01.9168284Z           ]
2026-06-22T01:08:01.9168388Z         }
2026-06-22T01:08:01.9168493Z       }
2026-06-22T01:08:01.9168594Z     },
2026-06-22T01:08:01.9168698Z     {
2026-06-22T01:08:01.9168816Z       "id": "REQ-PAIR-4",
2026-06-22T01:08:01.9169029Z       "title": "Subnet naming on first pairing",
2026-06-22T01:08:01.9169148Z       "requiredStages": [
2026-06-22T01:08:01.9169248Z         "impl",
2026-06-22T01:08:01.9169358Z         "unit"
2026-06-22T01:08:01.9169448Z       ],
2026-06-22T01:08:01.9169554Z       "stages": {
2026-06-22T01:08:01.9169659Z         "doc": {
2026-06-22T01:08:01.9169762Z           "complete": false,
2026-06-22T01:08:01.9169873Z           "evidence": []
2026-06-22T01:08:01.9169968Z         },
2026-06-22T01:08:01.9170077Z         "impl": {
2026-06-22T01:08:01.9170183Z           "complete": true,
2026-06-22T01:08:01.9170301Z           "evidence": [
2026-06-22T01:08:01.9170397Z             {
2026-06-22T01:08:01.9170541Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T01:08:01.9170646Z               "line": 174
2026-06-22T01:08:01.9170745Z             }
2026-06-22T01:08:01.9170846Z           ]
2026-06-22T01:08:01.9170945Z         },
2026-06-22T01:08:01.9171147Z         "int": {
2026-06-22T01:08:01.9171260Z           "complete": false,
2026-06-22T01:08:01.9171375Z           "evidence": []
2026-06-22T01:08:01.9171481Z         },
2026-06-22T01:08:01.9171584Z         "unit": {
2026-06-22T01:08:01.9171702Z           "complete": true,
2026-06-22T01:08:01.9171808Z           "evidence": [
2026-06-22T01:08:01.9171908Z             {
2026-06-22T01:08:01.9172055Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9172161Z               "line": 1294
2026-06-22T01:08:01.9172270Z             }
2026-06-22T01:08:01.9172370Z           ]
2026-06-22T01:08:01.9172471Z         }
2026-06-22T01:08:01.9172685Z       }
2026-06-22T01:08:01.9172786Z     },
2026-06-22T01:08:01.9172886Z     {
2026-06-22T01:08:01.9173004Z       "id": "REQ-PAIR-5",
2026-06-22T01:08:01.9173344Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-22T01:08:01.9173458Z       "requiredStages": [
2026-06-22T01:08:01.9173562Z         "impl",
2026-06-22T01:08:01.9173668Z         "unit",
2026-06-22T01:08:01.9173773Z         "int"
2026-06-22T01:08:01.9173871Z       ],
2026-06-22T01:08:01.9173981Z       "stages": {
2026-06-22T01:08:01.9174085Z         "doc": {
2026-06-22T01:08:01.9174188Z           "complete": false,
2026-06-22T01:08:01.9174303Z           "evidence": []
2026-06-22T01:08:01.9174399Z         },
2026-06-22T01:08:01.9174503Z         "impl": {
2026-06-22T01:08:01.9174613Z           "complete": true,
2026-06-22T01:08:01.9174718Z           "evidence": [
2026-06-22T01:08:01.9174822Z             {
2026-06-22T01:08:01.9174976Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9175090Z               "line": 44
2026-06-22T01:08:01.9175189Z             },
2026-06-22T01:08:01.9175296Z             {
2026-06-22T01:08:01.9175447Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9175561Z               "line": 96
2026-06-22T01:08:01.9175667Z             },
2026-06-22T01:08:01.9175762Z             {
2026-06-22T01:08:01.9175920Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9176029Z               "line": 107
2026-06-22T01:08:01.9176138Z             },
2026-06-22T01:08:01.9176240Z             {
2026-06-22T01:08:01.9176386Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9176496Z               "line": 124
2026-06-22T01:08:01.9176598Z             },
2026-06-22T01:08:01.9176696Z             {
2026-06-22T01:08:01.9176843Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9176957Z               "line": 155
2026-06-22T01:08:01.9177060Z             },
2026-06-22T01:08:01.9177170Z             {
2026-06-22T01:08:01.9177318Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9177427Z               "line": 195
2026-06-22T01:08:01.9177528Z             },
2026-06-22T01:08:01.9177623Z             {
2026-06-22T01:08:01.9177779Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9177890Z               "line": 251
2026-06-22T01:08:01.9177995Z             },
2026-06-22T01:08:01.9178094Z             {
2026-06-22T01:08:01.9178262Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9178367Z               "line": 33
2026-06-22T01:08:01.9178467Z             },
2026-06-22T01:08:01.9178572Z             {
2026-06-22T01:08:01.9178743Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9178849Z               "line": 45
2026-06-22T01:08:01.9179025Z             },
2026-06-22T01:08:01.9179126Z             {
2026-06-22T01:08:01.9179291Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9179395Z               "line": 59
2026-06-22T01:08:01.9179500Z             },
2026-06-22T01:08:01.9179603Z             {
2026-06-22T01:08:01.9179751Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9179961Z               "line": 376
2026-06-22T01:08:01.9180056Z             }
2026-06-22T01:08:01.9180162Z           ]
2026-06-22T01:08:01.9180266Z         },
2026-06-22T01:08:01.9180366Z         "int": {
2026-06-22T01:08:01.9180481Z           "complete": true,
2026-06-22T01:08:01.9180590Z           "evidence": [
2026-06-22T01:08:01.9180686Z             {
2026-06-22T01:08:01.9180834Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9180943Z               "line": 887
2026-06-22T01:08:01.9181044Z             },
2026-06-22T01:08:01.9181149Z             {
2026-06-22T01:08:01.9181301Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9181510Z               "line": 342
2026-06-22T01:08:01.9181615Z             }
2026-06-22T01:08:01.9181707Z           ]
2026-06-22T01:08:01.9181806Z         },
2026-06-22T01:08:01.9181911Z         "unit": {
2026-06-22T01:08:01.9182022Z           "complete": true,
2026-06-22T01:08:01.9182135Z           "evidence": [
2026-06-22T01:08:01.9182234Z             {
2026-06-22T01:08:01.9182378Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9182497Z               "line": 293
2026-06-22T01:08:01.9182601Z             },
2026-06-22T01:08:01.9182707Z             {
2026-06-22T01:08:01.9182853Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9182969Z               "line": 304
2026-06-22T01:08:01.9183069Z             },
2026-06-22T01:08:01.9183173Z             {
2026-06-22T01:08:01.9183313Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9183421Z               "line": 406
2026-06-22T01:08:01.9183531Z             },
2026-06-22T01:08:01.9183622Z             {
2026-06-22T01:08:01.9183784Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9183894Z               "line": 72
2026-06-22T01:08:01.9183995Z             },
2026-06-22T01:08:01.9184098Z             {
2026-06-22T01:08:01.9184257Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9184375Z               "line": 82
2026-06-22T01:08:01.9184474Z             },
2026-06-22T01:08:01.9184579Z             {
2026-06-22T01:08:01.9184729Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9184843Z               "line": 100
2026-06-22T01:08:01.9184940Z             },
2026-06-22T01:08:01.9185044Z             {
2026-06-22T01:08:01.9185206Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9185316Z               "line": 110
2026-06-22T01:08:01.9185420Z             },
2026-06-22T01:08:01.9185521Z             {
2026-06-22T01:08:01.9185683Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T01:08:01.9185792Z               "line": 125
2026-06-22T01:08:01.9185894Z             },
2026-06-22T01:08:01.9185998Z             {
2026-06-22T01:08:01.9186136Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9186255Z               "line": 1044
2026-06-22T01:08:01.9186355Z             },
2026-06-22T01:08:01.9186461Z             {
2026-06-22T01:08:01.9186613Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9186718Z               "line": 1110
2026-06-22T01:08:01.9186824Z             },
2026-06-22T01:08:01.9186922Z             {
2026-06-22T01:08:01.9187081Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9187191Z               "line": 1357
2026-06-22T01:08:01.9187289Z             }
2026-06-22T01:08:01.9187384Z           ]
2026-06-22T01:08:01.9187480Z         }
2026-06-22T01:08:01.9187592Z       }
2026-06-22T01:08:01.9187691Z     },
2026-06-22T01:08:01.9187792Z     {
2026-06-22T01:08:01.9187907Z       "id": "REQ-PAIR-6",
2026-06-22T01:08:01.9188203Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-22T01:08:01.9188326Z       "requiredStages": [
2026-06-22T01:08:01.9188508Z         "impl",
2026-06-22T01:08:01.9188617Z         "unit"
2026-06-22T01:08:01.9188713Z       ],
2026-06-22T01:08:01.9188817Z       "stages": {
2026-06-22T01:08:01.9188917Z         "doc": {
2026-06-22T01:08:01.9189113Z           "complete": false,
2026-06-22T01:08:01.9189222Z           "evidence": []
2026-06-22T01:08:01.9189328Z         },
2026-06-22T01:08:01.9189438Z         "impl": {
2026-06-22T01:08:01.9189542Z           "complete": true,
2026-06-22T01:08:01.9189648Z           "evidence": [
2026-06-22T01:08:01.9189743Z             {
2026-06-22T01:08:01.9189875Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9189979Z               "line": 3328
2026-06-22T01:08:01.9190173Z             },
2026-06-22T01:08:01.9190277Z             {
2026-06-22T01:08:01.9190403Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9190516Z               "line": 3709
2026-06-22T01:08:01.9190621Z             },
2026-06-22T01:08:01.9190727Z             {
2026-06-22T01:08:01.9190873Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.9190980Z               "line": 18
2026-06-22T01:08:01.9191084Z             },
2026-06-22T01:08:01.9191184Z             {
2026-06-22T01:08:01.9191318Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.9191422Z               "line": 49
2026-06-22T01:08:01.9191531Z             },
2026-06-22T01:08:01.9191638Z             {
2026-06-22T01:08:01.9191770Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.9191885Z               "line": 318
2026-06-22T01:08:01.9191986Z             }
2026-06-22T01:08:01.9192084Z           ]
2026-06-22T01:08:01.9192185Z         },
2026-06-22T01:08:01.9192291Z         "int": {
2026-06-22T01:08:01.9192404Z           "complete": false,
2026-06-22T01:08:01.9192510Z           "evidence": []
2026-06-22T01:08:01.9192606Z         },
2026-06-22T01:08:01.9192700Z         "unit": {
2026-06-22T01:08:01.9192818Z           "complete": true,
2026-06-22T01:08:01.9192928Z           "evidence": [
2026-06-22T01:08:01.9193029Z             {
2026-06-22T01:08:01.9193157Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9193263Z               "line": 10935
2026-06-22T01:08:01.9193367Z             },
2026-06-22T01:08:01.9193471Z             {
2026-06-22T01:08:01.9193610Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9193719Z               "line": 10952
2026-06-22T01:08:01.9193819Z             },
2026-06-22T01:08:01.9193911Z             {
2026-06-22T01:08:01.9194044Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.9194149Z               "line": 383
2026-06-22T01:08:01.9194250Z             },
2026-06-22T01:08:01.9194363Z             {
2026-06-22T01:08:01.9194498Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T01:08:01.9194602Z               "line": 392
2026-06-22T01:08:01.9194706Z             }
2026-06-22T01:08:01.9194808Z           ]
2026-06-22T01:08:01.9194912Z         }
2026-06-22T01:08:01.9195011Z       }
2026-06-22T01:08:01.9195106Z     },
2026-06-22T01:08:01.9195201Z     {
2026-06-22T01:08:01.9195318Z       "id": "REQ-PAIR-7",
2026-06-22T01:08:01.9195505Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-22T01:08:01.9195628Z       "requiredStages": [],
2026-06-22T01:08:01.9195733Z       "stages": {
2026-06-22T01:08:01.9195839Z         "doc": {
2026-06-22T01:08:01.9195966Z           "complete": false,
2026-06-22T01:08:01.9196077Z           "evidence": []
2026-06-22T01:08:01.9196177Z         },
2026-06-22T01:08:01.9196281Z         "impl": {
2026-06-22T01:08:01.9196397Z           "complete": false,
2026-06-22T01:08:01.9196506Z           "evidence": []
2026-06-22T01:08:01.9196610Z         },
2026-06-22T01:08:01.9196711Z         "int": {
2026-06-22T01:08:01.9196816Z           "complete": false,
2026-06-22T01:08:01.9196925Z           "evidence": []
2026-06-22T01:08:01.9197026Z         },
2026-06-22T01:08:01.9197135Z         "unit": {
2026-06-22T01:08:01.9197258Z           "complete": false,
2026-06-22T01:08:01.9197474Z           "evidence": []
2026-06-22T01:08:01.9197578Z         }
2026-06-22T01:08:01.9197680Z       }
2026-06-22T01:08:01.9197779Z     },
2026-06-22T01:08:01.9197887Z     {
2026-06-22T01:08:01.9198002Z       "id": "REQ-PAIR-8",
2026-06-22T01:08:01.9199549Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-22T01:08:01.9199787Z       "requiredStages": [
2026-06-22T01:08:01.9199898Z         "impl",
2026-06-22T01:08:01.9200007Z         "unit"
2026-06-22T01:08:01.9200107Z       ],
2026-06-22T01:08:01.9200213Z       "stages": {
2026-06-22T01:08:01.9200308Z         "doc": {
2026-06-22T01:08:01.9200440Z           "complete": false,
2026-06-22T01:08:01.9200549Z           "evidence": []
2026-06-22T01:08:01.9200653Z         },
2026-06-22T01:08:01.9200757Z         "impl": {
2026-06-22T01:08:01.9200866Z           "complete": true,
2026-06-22T01:08:01.9200977Z           "evidence": [
2026-06-22T01:08:01.9201076Z             {
2026-06-22T01:08:01.9201239Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9201344Z               "line": 577
2026-06-22T01:08:01.9201448Z             },
2026-06-22T01:08:01.9201554Z             {
2026-06-22T01:08:01.9201715Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9201845Z               "line": 22
2026-06-22T01:08:01.9201949Z             },
2026-06-22T01:08:01.9202049Z             {
2026-06-22T01:08:01.9202198Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9202307Z               "line": 76
2026-06-22T01:08:01.9202411Z             },
2026-06-22T01:08:01.9202508Z             {
2026-06-22T01:08:01.9202669Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9202779Z               "line": 127
2026-06-22T01:08:01.9202884Z             }
2026-06-22T01:08:01.9202983Z           ]
2026-06-22T01:08:01.9203085Z         },
2026-06-22T01:08:01.9203194Z         "int": {
2026-06-22T01:08:01.9203307Z           "complete": false,
2026-06-22T01:08:01.9203416Z           "evidence": []
2026-06-22T01:08:01.9203518Z         },
2026-06-22T01:08:01.9203627Z         "unit": {
2026-06-22T01:08:01.9203731Z           "complete": true,
2026-06-22T01:08:01.9203851Z           "evidence": [
2026-06-22T01:08:01.9203950Z             {
2026-06-22T01:08:01.9204095Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9204213Z               "line": 183
2026-06-22T01:08:01.9204317Z             },
2026-06-22T01:08:01.9204419Z             {
2026-06-22T01:08:01.9204580Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9204695Z               "line": 195
2026-06-22T01:08:01.9204800Z             },
2026-06-22T01:08:01.9204905Z             {
2026-06-22T01:08:01.9205063Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9205176Z               "line": 211
2026-06-22T01:08:01.9205281Z             },
2026-06-22T01:08:01.9205387Z             {
2026-06-22T01:08:01.9205528Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T01:08:01.9205646Z               "line": 227
2026-06-22T01:08:01.9205733Z             }
2026-06-22T01:08:01.9205841Z           ]
2026-06-22T01:08:01.9205945Z         }
2026-06-22T01:08:01.9206040Z       }
2026-06-22T01:08:01.9206137Z     },
2026-06-22T01:08:01.9206245Z     {
2026-06-22T01:08:01.9206365Z       "id": "REQ-PICKER-1",
2026-06-22T01:08:01.9210019Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-22T01:08:01.9210410Z       "requiredStages": [
2026-06-22T01:08:01.9210520Z         "impl",
2026-06-22T01:08:01.9210623Z         "unit"
2026-06-22T01:08:01.9210734Z       ],
2026-06-22T01:08:01.9210835Z       "stages": {
2026-06-22T01:08:01.9210938Z         "doc": {
2026-06-22T01:08:01.9211056Z           "complete": false,
2026-06-22T01:08:01.9211162Z           "evidence": []
2026-06-22T01:08:01.9211269Z         },
2026-06-22T01:08:01.9211378Z         "impl": {
2026-06-22T01:08:01.9211489Z           "complete": true,
2026-06-22T01:08:01.9211603Z           "evidence": [
2026-06-22T01:08:01.9211703Z             {
2026-06-22T01:08:01.9211852Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9211984Z               "line": 248
2026-06-22T01:08:01.9212090Z             },
2026-06-22T01:08:01.9212195Z             {
2026-06-22T01:08:01.9212342Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9212453Z               "line": 263
2026-06-22T01:08:01.9212552Z             }
2026-06-22T01:08:01.9212661Z           ]
2026-06-22T01:08:01.9212763Z         },
2026-06-22T01:08:01.9212881Z         "int": {
2026-06-22T01:08:01.9212986Z           "complete": false,
2026-06-22T01:08:01.9213101Z           "evidence": []
2026-06-22T01:08:01.9213205Z         },
2026-06-22T01:08:01.9213310Z         "unit": {
2026-06-22T01:08:01.9213426Z           "complete": true,
2026-06-22T01:08:01.9213529Z           "evidence": [
2026-06-22T01:08:01.9213635Z             {
2026-06-22T01:08:01.9213782Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.9213891Z               "line": 476
2026-06-22T01:08:01.9213995Z             },
2026-06-22T01:08:01.9214102Z             {
2026-06-22T01:08:01.9214238Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9214339Z               "line": 753
2026-06-22T01:08:01.9214445Z             },
2026-06-22T01:08:01.9214539Z             {
2026-06-22T01:08:01.9214683Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9214793Z               "line": 886
2026-06-22T01:08:01.9214892Z             },
2026-06-22T01:08:01.9214998Z             {
2026-06-22T01:08:01.9215131Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9215245Z               "line": 455
2026-06-22T01:08:01.9215350Z             }
2026-06-22T01:08:01.9215450Z           ]
2026-06-22T01:08:01.9215545Z         }
2026-06-22T01:08:01.9215647Z       }
2026-06-22T01:08:01.9215745Z     },
2026-06-22T01:08:01.9215836Z     {
2026-06-22T01:08:01.9215966Z       "id": "REQ-PICKER-2",
2026-06-22T01:08:01.9217936Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-22T01:08:01.9218151Z       "requiredStages": [
2026-06-22T01:08:01.9218251Z         "impl",
2026-06-22T01:08:01.9218361Z         "unit"
2026-06-22T01:08:01.9218461Z       ],
2026-06-22T01:08:01.9218575Z       "stages": {
2026-06-22T01:08:01.9218665Z         "doc": {
2026-06-22T01:08:01.9218781Z           "complete": false,
2026-06-22T01:08:01.9218886Z           "evidence": []
2026-06-22T01:08:01.9219074Z         },
2026-06-22T01:08:01.9219179Z         "impl": {
2026-06-22T01:08:01.9219292Z           "complete": true,
2026-06-22T01:08:01.9219526Z           "evidence": [
2026-06-22T01:08:01.9219630Z             {
2026-06-22T01:08:01.9219798Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9219903Z               "line": 183
2026-06-22T01:08:01.9220011Z             },
2026-06-22T01:08:01.9220112Z             {
2026-06-22T01:08:01.9220274Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9220383Z               "line": 296
2026-06-22T01:08:01.9220484Z             }
2026-06-22T01:08:01.9220579Z           ]
2026-06-22T01:08:01.9220679Z         },
2026-06-22T01:08:01.9220775Z         "int": {
2026-06-22T01:08:01.9220893Z           "complete": false,
2026-06-22T01:08:01.9221003Z           "evidence": []
2026-06-22T01:08:01.9221104Z         },
2026-06-22T01:08:01.9221207Z         "unit": {
2026-06-22T01:08:01.9221338Z           "complete": true,
2026-06-22T01:08:01.9221448Z           "evidence": [
2026-06-22T01:08:01.9221550Z             {
2026-06-22T01:08:01.9221717Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9221835Z               "line": 655
2026-06-22T01:08:01.9221939Z             }
2026-06-22T01:08:01.9222035Z           ]
2026-06-22T01:08:01.9222131Z         }
2026-06-22T01:08:01.9222234Z       }
2026-06-22T01:08:01.9222340Z     },
2026-06-22T01:08:01.9222445Z     {
2026-06-22T01:08:01.9222563Z       "id": "REQ-PICKER-3",
2026-06-22T01:08:01.9225052Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-22T01:08:01.9225190Z       "requiredStages": [
2026-06-22T01:08:01.9225295Z         "impl",
2026-06-22T01:08:01.9225419Z         "unit"
2026-06-22T01:08:01.9225529Z       ],
2026-06-22T01:08:01.9225624Z       "stages": {
2026-06-22T01:08:01.9225728Z         "doc": {
2026-06-22T01:08:01.9225834Z           "complete": false,
2026-06-22T01:08:01.9225944Z           "evidence": []
2026-06-22T01:08:01.9226043Z         },
2026-06-22T01:08:01.9226145Z         "impl": {
2026-06-22T01:08:01.9226268Z           "complete": true,
2026-06-22T01:08:01.9226377Z           "evidence": [
2026-06-22T01:08:01.9226483Z             {
2026-06-22T01:08:01.9226620Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9226729Z               "line": 124
2026-06-22T01:08:01.9226849Z             }
2026-06-22T01:08:01.9226951Z           ]
2026-06-22T01:08:01.9227055Z         },
2026-06-22T01:08:01.9227161Z         "int": {
2026-06-22T01:08:01.9227280Z           "complete": false,
2026-06-22T01:08:01.9227384Z           "evidence": []
2026-06-22T01:08:01.9227485Z         },
2026-06-22T01:08:01.9227694Z         "unit": {
2026-06-22T01:08:01.9227815Z           "complete": true,
2026-06-22T01:08:01.9227919Z           "evidence": [
2026-06-22T01:08:01.9228023Z             {
2026-06-22T01:08:01.9228167Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9228277Z               "line": 369
2026-06-22T01:08:01.9228382Z             }
2026-06-22T01:08:01.9228482Z           ]
2026-06-22T01:08:01.9228586Z         }
2026-06-22T01:08:01.9228692Z       }
2026-06-22T01:08:01.9228792Z     },
2026-06-22T01:08:01.9228896Z     {
2026-06-22T01:08:01.9229102Z       "id": "REQ-PICKER-4",
2026-06-22T01:08:01.9231030Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-22T01:08:01.9231278Z       "requiredStages": [
2026-06-22T01:08:01.9231387Z         "impl",
2026-06-22T01:08:01.9231492Z         "unit"
2026-06-22T01:08:01.9231593Z       ],
2026-06-22T01:08:01.9231702Z       "stages": {
2026-06-22T01:08:01.9231807Z         "doc": {
2026-06-22T01:08:01.9231918Z           "complete": false,
2026-06-22T01:08:01.9232031Z           "evidence": []
2026-06-22T01:08:01.9232149Z         },
2026-06-22T01:08:01.9232259Z         "impl": {
2026-06-22T01:08:01.9232372Z           "complete": true,
2026-06-22T01:08:01.9232480Z           "evidence": [
2026-06-22T01:08:01.9232580Z             {
2026-06-22T01:08:01.9232729Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9232842Z               "line": 353
2026-06-22T01:08:01.9232953Z             },
2026-06-22T01:08:01.9233048Z             {
2026-06-22T01:08:01.9233186Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9233301Z               "line": 105
2026-06-22T01:08:01.9233410Z             }
2026-06-22T01:08:01.9233506Z           ]
2026-06-22T01:08:01.9233611Z         },
2026-06-22T01:08:01.9233706Z         "int": {
2026-06-22T01:08:01.9233830Z           "complete": false,
2026-06-22T01:08:01.9233935Z           "evidence": []
2026-06-22T01:08:01.9234044Z         },
2026-06-22T01:08:01.9234145Z         "unit": {
2026-06-22T01:08:01.9234255Z           "complete": true,
2026-06-22T01:08:01.9234368Z           "evidence": [
2026-06-22T01:08:01.9234465Z             {
2026-06-22T01:08:01.9234616Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9234721Z               "line": 1246
2026-06-22T01:08:01.9234832Z             },
2026-06-22T01:08:01.9234940Z             {
2026-06-22T01:08:01.9235077Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9235193Z               "line": 427
2026-06-22T01:08:01.9235288Z             }
2026-06-22T01:08:01.9235387Z           ]
2026-06-22T01:08:01.9235489Z         }
2026-06-22T01:08:01.9238493Z       }
2026-06-22T01:08:01.9238608Z     },
2026-06-22T01:08:01.9238694Z     {
2026-06-22T01:08:01.9238827Z       "id": "REQ-PICKER-5",
2026-06-22T01:08:01.9242038Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-22T01:08:01.9242337Z       "requiredStages": [
2026-06-22T01:08:01.9242449Z         "impl",
2026-06-22T01:08:01.9242553Z         "unit"
2026-06-22T01:08:01.9242657Z       ],
2026-06-22T01:08:01.9242871Z       "stages": {
2026-06-22T01:08:01.9242974Z         "doc": {
2026-06-22T01:08:01.9243088Z           "complete": false,
2026-06-22T01:08:01.9243194Z           "evidence": []
2026-06-22T01:08:01.9243298Z         },
2026-06-22T01:08:01.9243403Z         "impl": {
2026-06-22T01:08:01.9243513Z           "complete": true,
2026-06-22T01:08:01.9243636Z           "evidence": [
2026-06-22T01:08:01.9243804Z             {
2026-06-22T01:08:01.9243937Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9244042Z               "line": 1802
2026-06-22T01:08:01.9244138Z             }
2026-06-22T01:08:01.9244237Z           ]
2026-06-22T01:08:01.9244342Z         },
2026-06-22T01:08:01.9244443Z         "int": {
2026-06-22T01:08:01.9244557Z           "complete": false,
2026-06-22T01:08:01.9244671Z           "evidence": []
2026-06-22T01:08:01.9244763Z         },
2026-06-22T01:08:01.9244866Z         "unit": {
2026-06-22T01:08:01.9244976Z           "complete": true,
2026-06-22T01:08:01.9245092Z           "evidence": [
2026-06-22T01:08:01.9245200Z             {
2026-06-22T01:08:01.9245325Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9245435Z               "line": 7526
2026-06-22T01:08:01.9245538Z             }
2026-06-22T01:08:01.9245638Z           ]
2026-06-22T01:08:01.9245739Z         }
2026-06-22T01:08:01.9245844Z       }
2026-06-22T01:08:01.9245952Z     },
2026-06-22T01:08:01.9246054Z     {
2026-06-22T01:08:01.9246205Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-22T01:08:01.9247769Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-22T01:08:01.9247907Z       "requiredStages": [],
2026-06-22T01:08:01.9248002Z       "stages": {
2026-06-22T01:08:01.9248109Z         "doc": {
2026-06-22T01:08:01.9248229Z           "complete": false,
2026-06-22T01:08:01.9248334Z           "evidence": []
2026-06-22T01:08:01.9248438Z         },
2026-06-22T01:08:01.9248543Z         "impl": {
2026-06-22T01:08:01.9248668Z           "complete": false,
2026-06-22T01:08:01.9248777Z           "evidence": []
2026-06-22T01:08:01.9248877Z         },
2026-06-22T01:08:01.9249058Z         "int": {
2026-06-22T01:08:01.9249163Z           "complete": false,
2026-06-22T01:08:01.9249274Z           "evidence": []
2026-06-22T01:08:01.9249382Z         },
2026-06-22T01:08:01.9249487Z         "unit": {
2026-06-22T01:08:01.9249602Z           "complete": false,
2026-06-22T01:08:01.9249697Z           "evidence": []
2026-06-22T01:08:01.9249802Z         }
2026-06-22T01:08:01.9249908Z       }
2026-06-22T01:08:01.9250007Z     },
2026-06-22T01:08:01.9250093Z     {
2026-06-22T01:08:01.9250228Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-22T01:08:01.9251372Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-22T01:08:01.9251629Z       "requiredStages": [
2026-06-22T01:08:01.9251740Z         "impl",
2026-06-22T01:08:01.9251840Z         "unit"
2026-06-22T01:08:01.9251940Z       ],
2026-06-22T01:08:01.9252050Z       "stages": {
2026-06-22T01:08:01.9252150Z         "doc": {
2026-06-22T01:08:01.9252273Z           "complete": false,
2026-06-22T01:08:01.9252379Z           "evidence": []
2026-06-22T01:08:01.9252479Z         },
2026-06-22T01:08:01.9252593Z         "impl": {
2026-06-22T01:08:01.9252703Z           "complete": true,
2026-06-22T01:08:01.9252813Z           "evidence": [
2026-06-22T01:08:01.9253023Z             {
2026-06-22T01:08:01.9253175Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9253283Z               "line": 275
2026-06-22T01:08:01.9253379Z             }
2026-06-22T01:08:01.9253482Z           ]
2026-06-22T01:08:01.9253576Z         },
2026-06-22T01:08:01.9253686Z         "int": {
2026-06-22T01:08:01.9253783Z           "complete": false,
2026-06-22T01:08:01.9253896Z           "evidence": []
2026-06-22T01:08:01.9253986Z         },
2026-06-22T01:08:01.9254093Z         "unit": {
2026-06-22T01:08:01.9254201Z           "complete": true,
2026-06-22T01:08:01.9254297Z           "evidence": [
2026-06-22T01:08:01.9254402Z             {
2026-06-22T01:08:01.9254535Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9254651Z               "line": 400
2026-06-22T01:08:01.9254745Z             }
2026-06-22T01:08:01.9254854Z           ]
2026-06-22T01:08:01.9254950Z         }
2026-06-22T01:08:01.9255055Z       }
2026-06-22T01:08:01.9255155Z     },
2026-06-22T01:08:01.9255255Z     {
2026-06-22T01:08:01.9255389Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-22T01:08:01.9256957Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-22T01:08:01.9257085Z       "requiredStages": [
2026-06-22T01:08:01.9257195Z         "impl",
2026-06-22T01:08:01.9257291Z         "unit"
2026-06-22T01:08:01.9257395Z       ],
2026-06-22T01:08:01.9257500Z       "stages": {
2026-06-22T01:08:01.9257606Z         "doc": {
2026-06-22T01:08:01.9257710Z           "complete": false,
2026-06-22T01:08:01.9257840Z           "evidence": []
2026-06-22T01:08:01.9257944Z         },
2026-06-22T01:08:01.9258048Z         "impl": {
2026-06-22T01:08:01.9258164Z           "complete": true,
2026-06-22T01:08:01.9258264Z           "evidence": [
2026-06-22T01:08:01.9258362Z             {
2026-06-22T01:08:01.9258514Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9258646Z               "line": 654
2026-06-22T01:08:01.9258750Z             }
2026-06-22T01:08:01.9258851Z           ]
2026-06-22T01:08:01.9259027Z         },
2026-06-22T01:08:01.9259118Z         "int": {
2026-06-22T01:08:01.9259237Z           "complete": false,
2026-06-22T01:08:01.9259341Z           "evidence": []
2026-06-22T01:08:01.9259443Z         },
2026-06-22T01:08:01.9259547Z         "unit": {
2026-06-22T01:08:01.9259656Z           "complete": true,
2026-06-22T01:08:01.9259767Z           "evidence": [
2026-06-22T01:08:01.9259866Z             {
2026-06-22T01:08:01.9260009Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9260115Z               "line": 1078
2026-06-22T01:08:01.9260219Z             },
2026-06-22T01:08:01.9260324Z             {
2026-06-22T01:08:01.9260459Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9260567Z               "line": 1092
2026-06-22T01:08:01.9260663Z             }
2026-06-22T01:08:01.9260858Z           ]
2026-06-22T01:08:01.9260968Z         }
2026-06-22T01:08:01.9261065Z       }
2026-06-22T01:08:01.9261159Z     },
2026-06-22T01:08:01.9261258Z     {
2026-06-22T01:08:01.9261377Z       "id": "REQ-PICKER-UX-V013",
2026-06-22T01:08:01.9262978Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-22T01:08:01.9263215Z       "requiredStages": [],
2026-06-22T01:08:01.9263326Z       "stages": {
2026-06-22T01:08:01.9263424Z         "doc": {
2026-06-22T01:08:01.9263539Z           "complete": false,
2026-06-22T01:08:01.9263655Z           "evidence": []
2026-06-22T01:08:01.9263758Z         },
2026-06-22T01:08:01.9263862Z         "impl": {
2026-06-22T01:08:01.9263968Z           "complete": false,
2026-06-22T01:08:01.9264080Z           "evidence": []
2026-06-22T01:08:01.9264179Z         },
2026-06-22T01:08:01.9264280Z         "int": {
2026-06-22T01:08:01.9264399Z           "complete": false,
2026-06-22T01:08:01.9264508Z           "evidence": []
2026-06-22T01:08:01.9264614Z         },
2026-06-22T01:08:01.9264714Z         "unit": {
2026-06-22T01:08:01.9264833Z           "complete": false,
2026-06-22T01:08:01.9264929Z           "evidence": []
2026-06-22T01:08:01.9265057Z         }
2026-06-22T01:08:01.9265157Z       }
2026-06-22T01:08:01.9265253Z     },
2026-06-22T01:08:01.9265353Z     {
2026-06-22T01:08:01.9265472Z       "id": "REQ-PRES-1",
2026-06-22T01:08:01.9266849Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-22T01:08:01.9266978Z       "requiredStages": [
2026-06-22T01:08:01.9267073Z         "impl",
2026-06-22T01:08:01.9267174Z         "unit",
2026-06-22T01:08:01.9267274Z         "int"
2026-06-22T01:08:01.9267373Z       ],
2026-06-22T01:08:01.9267479Z       "stages": {
2026-06-22T01:08:01.9267589Z         "doc": {
2026-06-22T01:08:01.9267717Z           "complete": true,
2026-06-22T01:08:01.9267822Z           "evidence": [
2026-06-22T01:08:01.9267927Z             {
2026-06-22T01:08:01.9268056Z               "path": "docs/DEFERRED.md",
2026-06-22T01:08:01.9268156Z               "line": 11
2026-06-22T01:08:01.9268266Z             }
2026-06-22T01:08:01.9268375Z           ]
2026-06-22T01:08:01.9268485Z         },
2026-06-22T01:08:01.9268589Z         "impl": {
2026-06-22T01:08:01.9268704Z           "complete": true,
2026-06-22T01:08:01.9268809Z           "evidence": [
2026-06-22T01:08:01.9268917Z             {
2026-06-22T01:08:01.9269141Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9269253Z               "line": 515
2026-06-22T01:08:01.9269378Z             },
2026-06-22T01:08:01.9269479Z             {
2026-06-22T01:08:01.9269625Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9269731Z               "line": 567
2026-06-22T01:08:01.9269840Z             },
2026-06-22T01:08:01.9269945Z             {
2026-06-22T01:08:01.9270089Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9270193Z               "line": 188
2026-06-22T01:08:01.9270298Z             },
2026-06-22T01:08:01.9270403Z             {
2026-06-22T01:08:01.9270536Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9270746Z               "line": 214
2026-06-22T01:08:01.9270846Z             },
2026-06-22T01:08:01.9270952Z             {
2026-06-22T01:08:01.9271099Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9271208Z               "line": 28
2026-06-22T01:08:01.9271315Z             },
2026-06-22T01:08:01.9271418Z             {
2026-06-22T01:08:01.9271567Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9271677Z               "line": 105
2026-06-22T01:08:01.9271784Z             },
2026-06-22T01:08:01.9271889Z             {
2026-06-22T01:08:01.9272036Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9272254Z               "line": 161
2026-06-22T01:08:01.9272355Z             },
2026-06-22T01:08:01.9272464Z             {
2026-06-22T01:08:01.9272618Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9272722Z               "line": 180
2026-06-22T01:08:01.9272831Z             },
2026-06-22T01:08:01.9272932Z             {
2026-06-22T01:08:01.9273088Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9273204Z               "line": 421
2026-06-22T01:08:01.9273303Z             },
2026-06-22T01:08:01.9273408Z             {
2026-06-22T01:08:01.9273562Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9273670Z               "line": 289
2026-06-22T01:08:01.9273766Z             },
2026-06-22T01:08:01.9273862Z             {
2026-06-22T01:08:01.9274008Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9274119Z               "line": 336
2026-06-22T01:08:01.9274230Z             },
2026-06-22T01:08:01.9274333Z             {
2026-06-22T01:08:01.9274471Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9274575Z               "line": 362
2026-06-22T01:08:01.9274683Z             },
2026-06-22T01:08:01.9274783Z             {
2026-06-22T01:08:01.9274927Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9275040Z               "line": 100
2026-06-22T01:08:01.9275141Z             }
2026-06-22T01:08:01.9275241Z           ]
2026-06-22T01:08:01.9275340Z         },
2026-06-22T01:08:01.9275441Z         "int": {
2026-06-22T01:08:01.9275556Z           "complete": true,
2026-06-22T01:08:01.9275674Z           "evidence": [
2026-06-22T01:08:01.9275780Z             {
2026-06-22T01:08:01.9275937Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9276051Z               "line": 563
2026-06-22T01:08:01.9276152Z             },
2026-06-22T01:08:01.9276252Z             {
2026-06-22T01:08:01.9276395Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9276513Z               "line": 747
2026-06-22T01:08:01.9276614Z             },
2026-06-22T01:08:01.9276705Z             {
2026-06-22T01:08:01.9276852Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9276962Z               "line": 1165
2026-06-22T01:08:01.9277073Z             }
2026-06-22T01:08:01.9277171Z           ]
2026-06-22T01:08:01.9277275Z         },
2026-06-22T01:08:01.9277381Z         "unit": {
2026-06-22T01:08:01.9277486Z           "complete": true,
2026-06-22T01:08:01.9277609Z           "evidence": [
2026-06-22T01:08:01.9277710Z             {
2026-06-22T01:08:01.9277857Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9277967Z               "line": 674
2026-06-22T01:08:01.9278073Z             },
2026-06-22T01:08:01.9278172Z             {
2026-06-22T01:08:01.9278320Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9278425Z               "line": 238
2026-06-22T01:08:01.9278529Z             },
2026-06-22T01:08:01.9278640Z             {
2026-06-22T01:08:01.9278787Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9278896Z               "line": 269
2026-06-22T01:08:01.9279074Z             },
2026-06-22T01:08:01.9279173Z             {
2026-06-22T01:08:01.9279313Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9279568Z               "line": 305
2026-06-22T01:08:01.9279678Z             },
2026-06-22T01:08:01.9279781Z             {
2026-06-22T01:08:01.9279928Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T01:08:01.9280039Z               "line": 336
2026-06-22T01:08:01.9280138Z             },
2026-06-22T01:08:01.9280243Z             {
2026-06-22T01:08:01.9280405Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9280524Z               "line": 1217
2026-06-22T01:08:01.9280625Z             },
2026-06-22T01:08:01.9280725Z             {
2026-06-22T01:08:01.9280987Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9281092Z               "line": 1163
2026-06-22T01:08:01.9281197Z             }
2026-06-22T01:08:01.9281292Z           ]
2026-06-22T01:08:01.9281397Z         }
2026-06-22T01:08:01.9281502Z       }
2026-06-22T01:08:01.9281598Z     },
2026-06-22T01:08:01.9281687Z     {
2026-06-22T01:08:01.9281793Z       "id": "REQ-RC-1",
2026-06-22T01:08:01.9283769Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-22T01:08:01.9283916Z       "requiredStages": [
2026-06-22T01:08:01.9284021Z         "impl",
2026-06-22T01:08:01.9284127Z         "unit",
2026-06-22T01:08:01.9284230Z         "int"
2026-06-22T01:08:01.9284336Z       ],
2026-06-22T01:08:01.9284441Z       "stages": {
2026-06-22T01:08:01.9284549Z         "doc": {
2026-06-22T01:08:01.9284670Z           "complete": false,
2026-06-22T01:08:01.9284776Z           "evidence": []
2026-06-22T01:08:01.9284878Z         },
2026-06-22T01:08:01.9284978Z         "impl": {
2026-06-22T01:08:01.9285097Z           "complete": true,
2026-06-22T01:08:01.9285209Z           "evidence": [
2026-06-22T01:08:01.9285309Z             {
2026-06-22T01:08:01.9285448Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.9285557Z               "line": 1038
2026-06-22T01:08:01.9285662Z             },
2026-06-22T01:08:01.9285763Z             {
2026-06-22T01:08:01.9285920Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9286035Z               "line": 2211
2026-06-22T01:08:01.9286140Z             },
2026-06-22T01:08:01.9286239Z             {
2026-06-22T01:08:01.9286388Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9286502Z               "line": 1017
2026-06-22T01:08:01.9286606Z             },
2026-06-22T01:08:01.9286703Z             {
2026-06-22T01:08:01.9286849Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9286956Z               "line": 1051
2026-06-22T01:08:01.9287051Z             },
2026-06-22T01:08:01.9287146Z             {
2026-06-22T01:08:01.9287275Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9287384Z               "line": 22
2026-06-22T01:08:01.9287489Z             },
2026-06-22T01:08:01.9287599Z             {
2026-06-22T01:08:01.9287731Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9287850Z               "line": 701
2026-06-22T01:08:01.9287955Z             }
2026-06-22T01:08:01.9288065Z           ]
2026-06-22T01:08:01.9288165Z         },
2026-06-22T01:08:01.9288260Z         "int": {
2026-06-22T01:08:01.9288375Z           "complete": true,
2026-06-22T01:08:01.9288484Z           "evidence": [
2026-06-22T01:08:01.9288590Z             {
2026-06-22T01:08:01.9288808Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9288915Z               "line": 261
2026-06-22T01:08:01.9289109Z             },
2026-06-22T01:08:01.9289210Z             {
2026-06-22T01:08:01.9289362Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9289476Z               "line": 288
2026-06-22T01:08:01.9289577Z             },
2026-06-22T01:08:01.9289676Z             {
2026-06-22T01:08:01.9289825Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9289934Z               "line": 416
2026-06-22T01:08:01.9290038Z             }
2026-06-22T01:08:01.9290138Z           ]
2026-06-22T01:08:01.9290336Z         },
2026-06-22T01:08:01.9290445Z         "unit": {
2026-06-22T01:08:01.9290551Z           "complete": true,
2026-06-22T01:08:01.9290655Z           "evidence": [
2026-06-22T01:08:01.9290755Z             {
2026-06-22T01:08:01.9290895Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9291003Z               "line": 1415
2026-06-22T01:08:01.9291108Z             },
2026-06-22T01:08:01.9291214Z             {
2026-06-22T01:08:01.9291342Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9291448Z               "line": 1133
2026-06-22T01:08:01.9291543Z             },
2026-06-22T01:08:01.9291652Z             {
2026-06-22T01:08:01.9291777Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9291886Z               "line": 1162
2026-06-22T01:08:01.9291986Z             },
2026-06-22T01:08:01.9292087Z             {
2026-06-22T01:08:01.9292215Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9292319Z               "line": 1175
2026-06-22T01:08:01.9292426Z             }
2026-06-22T01:08:01.9292524Z           ]
2026-06-22T01:08:01.9292625Z         }
2026-06-22T01:08:01.9292731Z       }
2026-06-22T01:08:01.9292830Z     },
2026-06-22T01:08:01.9292919Z     {
2026-06-22T01:08:01.9293048Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-22T01:08:01.9298710Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-22T01:08:01.9298906Z       "requiredStages": [
2026-06-22T01:08:01.9299097Z         "doc",
2026-06-22T01:08:01.9299325Z         "impl",
2026-06-22T01:08:01.9299455Z         "unit"
2026-06-22T01:08:01.9299550Z       ],
2026-06-22T01:08:01.9299654Z       "stages": {
2026-06-22T01:08:01.9299756Z         "doc": {
2026-06-22T01:08:01.9299879Z           "complete": true,
2026-06-22T01:08:01.9299988Z           "evidence": [
2026-06-22T01:08:01.9300080Z             {
2026-06-22T01:08:01.9300203Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9300317Z               "line": 345
2026-06-22T01:08:01.9300419Z             },
2026-06-22T01:08:01.9300518Z             {
2026-06-22T01:08:01.9300660Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.9300760Z               "line": 440
2026-06-22T01:08:01.9300972Z             }
2026-06-22T01:08:01.9301082Z           ]
2026-06-22T01:08:01.9301178Z         },
2026-06-22T01:08:01.9301291Z         "impl": {
2026-06-22T01:08:01.9301407Z           "complete": true,
2026-06-22T01:08:01.9301525Z           "evidence": [
2026-06-22T01:08:01.9301625Z             {
2026-06-22T01:08:01.9301760Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9301878Z               "line": 226
2026-06-22T01:08:01.9301974Z             },
2026-06-22T01:08:01.9302079Z             {
2026-06-22T01:08:01.9302207Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9302327Z               "line": 285
2026-06-22T01:08:01.9302431Z             },
2026-06-22T01:08:01.9302536Z             {
2026-06-22T01:08:01.9302662Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9302770Z               "line": 300
2026-06-22T01:08:01.9302865Z             },
2026-06-22T01:08:01.9302957Z             {
2026-06-22T01:08:01.9303075Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9303195Z               "line": 315
2026-06-22T01:08:01.9303286Z             },
2026-06-22T01:08:01.9303395Z             {
2026-06-22T01:08:01.9303512Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9303623Z               "line": 364
2026-06-22T01:08:01.9303716Z             }
2026-06-22T01:08:01.9303825Z           ]
2026-06-22T01:08:01.9303925Z         },
2026-06-22T01:08:01.9304031Z         "int": {
2026-06-22T01:08:01.9304154Z           "complete": false,
2026-06-22T01:08:01.9304260Z           "evidence": []
2026-06-22T01:08:01.9304364Z         },
2026-06-22T01:08:01.9304469Z         "unit": {
2026-06-22T01:08:01.9304594Z           "complete": true,
2026-06-22T01:08:01.9304708Z           "evidence": [
2026-06-22T01:08:01.9304807Z             {
2026-06-22T01:08:01.9304937Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9305046Z               "line": 1190
2026-06-22T01:08:01.9305151Z             },
2026-06-22T01:08:01.9305256Z             {
2026-06-22T01:08:01.9305384Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9305504Z               "line": 1305
2026-06-22T01:08:01.9305600Z             }
2026-06-22T01:08:01.9305703Z           ]
2026-06-22T01:08:01.9305805Z         }
2026-06-22T01:08:01.9305905Z       }
2026-06-22T01:08:01.9306009Z     },
2026-06-22T01:08:01.9306117Z     {
2026-06-22T01:08:01.9306246Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-22T01:08:01.9310596Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-22T01:08:01.9310863Z       "requiredStages": [
2026-06-22T01:08:01.9311078Z         "doc",
2026-06-22T01:08:01.9311182Z         "impl",
2026-06-22T01:08:01.9311282Z         "unit"
2026-06-22T01:08:01.9311386Z       ],
2026-06-22T01:08:01.9311485Z       "stages": {
2026-06-22T01:08:01.9311585Z         "doc": {
2026-06-22T01:08:01.9311700Z           "complete": true,
2026-06-22T01:08:01.9311818Z           "evidence": [
2026-06-22T01:08:01.9311919Z             {
2026-06-22T01:08:01.9312058Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.9312166Z               "line": 461
2026-06-22T01:08:01.9312268Z             }
2026-06-22T01:08:01.9312372Z           ]
2026-06-22T01:08:01.9312471Z         },
2026-06-22T01:08:01.9312578Z         "impl": {
2026-06-22T01:08:01.9312687Z           "complete": true,
2026-06-22T01:08:01.9312805Z           "evidence": [
2026-06-22T01:08:01.9312907Z             {
2026-06-22T01:08:01.9313030Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9313144Z               "line": 421
2026-06-22T01:08:01.9313246Z             },
2026-06-22T01:08:01.9313353Z             {
2026-06-22T01:08:01.9313473Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9313579Z               "line": 437
2026-06-22T01:08:01.9313687Z             }
2026-06-22T01:08:01.9313783Z           ]
2026-06-22T01:08:01.9313890Z         },
2026-06-22T01:08:01.9313992Z         "int": {
2026-06-22T01:08:01.9314115Z           "complete": false,
2026-06-22T01:08:01.9314230Z           "evidence": []
2026-06-22T01:08:01.9314328Z         },
2026-06-22T01:08:01.9314437Z         "unit": {
2026-06-22T01:08:01.9314548Z           "complete": true,
2026-06-22T01:08:01.9314652Z           "evidence": [
2026-06-22T01:08:01.9314752Z             {
2026-06-22T01:08:01.9314882Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9314990Z               "line": 1440
2026-06-22T01:08:01.9315091Z             },
2026-06-22T01:08:01.9315196Z             {
2026-06-22T01:08:01.9315324Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9315444Z               "line": 1459
2026-06-22T01:08:01.9315539Z             },
2026-06-22T01:08:01.9315649Z             {
2026-06-22T01:08:01.9315764Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9315878Z               "line": 1471
2026-06-22T01:08:01.9315978Z             },
2026-06-22T01:08:01.9316084Z             {
2026-06-22T01:08:01.9316211Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9316321Z               "line": 1499
2026-06-22T01:08:01.9316428Z             }
2026-06-22T01:08:01.9316536Z           ]
2026-06-22T01:08:01.9316635Z         }
2026-06-22T01:08:01.9316740Z       }
2026-06-22T01:08:01.9316843Z     },
2026-06-22T01:08:01.9316947Z     {
2026-06-22T01:08:01.9317057Z       "id": "REQ-RC-WIN-PASTE",
2026-06-22T01:08:01.9321838Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-22T01:08:01.9322232Z       "requiredStages": [
2026-06-22T01:08:01.9322336Z         "doc",
2026-06-22T01:08:01.9322435Z         "impl",
2026-06-22T01:08:01.9322542Z         "unit"
2026-06-22T01:08:01.9322646Z       ],
2026-06-22T01:08:01.9322755Z       "stages": {
2026-06-22T01:08:01.9322857Z         "doc": {
2026-06-22T01:08:01.9322980Z           "complete": true,
2026-06-22T01:08:01.9323084Z           "evidence": [
2026-06-22T01:08:01.9323190Z             {
2026-06-22T01:08:01.9323322Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T01:08:01.9323438Z               "line": 447
2026-06-22T01:08:01.9323542Z             }
2026-06-22T01:08:01.9323642Z           ]
2026-06-22T01:08:01.9323748Z         },
2026-06-22T01:08:01.9323848Z         "impl": {
2026-06-22T01:08:01.9323957Z           "complete": true,
2026-06-22T01:08:01.9324073Z           "evidence": [
2026-06-22T01:08:01.9324177Z             {
2026-06-22T01:08:01.9324295Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9324402Z               "line": 395
2026-06-22T01:08:01.9324510Z             },
2026-06-22T01:08:01.9324609Z             {
2026-06-22T01:08:01.9324738Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9324846Z               "line": 411
2026-06-22T01:08:01.9324955Z             },
2026-06-22T01:08:01.9325060Z             {
2026-06-22T01:08:01.9325189Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9325307Z               "line": 454
2026-06-22T01:08:01.9325409Z             },
2026-06-22T01:08:01.9325504Z             {
2026-06-22T01:08:01.9325622Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9325733Z               "line": 468
2026-06-22T01:08:01.9325828Z             },
2026-06-22T01:08:01.9325923Z             {
2026-06-22T01:08:01.9326053Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9326166Z               "line": 479
2026-06-22T01:08:01.9326266Z             }
2026-06-22T01:08:01.9326368Z           ]
2026-06-22T01:08:01.9326476Z         },
2026-06-22T01:08:01.9326581Z         "int": {
2026-06-22T01:08:01.9326692Z           "complete": false,
2026-06-22T01:08:01.9326800Z           "evidence": []
2026-06-22T01:08:01.9326900Z         },
2026-06-22T01:08:01.9327012Z         "unit": {
2026-06-22T01:08:01.9327124Z           "complete": true,
2026-06-22T01:08:01.9327237Z           "evidence": [
2026-06-22T01:08:01.9327347Z             {
2026-06-22T01:08:01.9327469Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9327584Z               "line": 1381
2026-06-22T01:08:01.9327680Z             },
2026-06-22T01:08:01.9327784Z             {
2026-06-22T01:08:01.9327912Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9328023Z               "line": 1402
2026-06-22T01:08:01.9328132Z             },
2026-06-22T01:08:01.9328232Z             {
2026-06-22T01:08:01.9328361Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9328466Z               "line": 1423
2026-06-22T01:08:01.9328647Z             }
2026-06-22T01:08:01.9328752Z           ]
2026-06-22T01:08:01.9328852Z         }
2026-06-22T01:08:01.9329014Z       }
2026-06-22T01:08:01.9329110Z     },
2026-06-22T01:08:01.9329206Z     {
2026-06-22T01:08:01.9329314Z       "id": "REQ-RCVIEW-1",
2026-06-22T01:08:01.9333755Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-22T01:08:01.9334036Z       "requiredStages": [
2026-06-22T01:08:01.9334145Z         "doc",
2026-06-22T01:08:01.9334259Z         "impl",
2026-06-22T01:08:01.9334361Z         "unit",
2026-06-22T01:08:01.9334488Z         "int"
2026-06-22T01:08:01.9334589Z       ],
2026-06-22T01:08:01.9334695Z       "stages": {
2026-06-22T01:08:01.9334807Z         "doc": {
2026-06-22T01:08:01.9334913Z           "complete": true,
2026-06-22T01:08:01.9335019Z           "evidence": [
2026-06-22T01:08:01.9335122Z             {
2026-06-22T01:08:01.9335245Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9335346Z               "line": 342
2026-06-22T01:08:01.9335453Z             }
2026-06-22T01:08:01.9335557Z           ]
2026-06-22T01:08:01.9335659Z         },
2026-06-22T01:08:01.9335763Z         "impl": {
2026-06-22T01:08:01.9335877Z           "complete": true,
2026-06-22T01:08:01.9336011Z           "evidence": [
2026-06-22T01:08:01.9336111Z             {
2026-06-22T01:08:01.9336269Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:01.9336379Z               "line": 549
2026-06-22T01:08:01.9336478Z             },
2026-06-22T01:08:01.9336579Z             {
2026-06-22T01:08:01.9336727Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9336850Z               "line": 722
2026-06-22T01:08:01.9336951Z             },
2026-06-22T01:08:01.9337050Z             {
2026-06-22T01:08:01.9337190Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9337294Z               "line": 733
2026-06-22T01:08:01.9337398Z             },
2026-06-22T01:08:01.9337505Z             {
2026-06-22T01:08:01.9337651Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.9337764Z               "line": 41
2026-06-22T01:08:01.9337874Z             },
2026-06-22T01:08:01.9337977Z             {
2026-06-22T01:08:01.9338134Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.9338254Z               "line": 62
2026-06-22T01:08:01.9338349Z             },
2026-06-22T01:08:01.9338459Z             {
2026-06-22T01:08:01.9338588Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.9338701Z               "line": 309
2026-06-22T01:08:01.9338926Z             },
2026-06-22T01:08:01.9339098Z             {
2026-06-22T01:08:01.9339231Z               "path": "crates/spt/src/rc.rs",
2026-06-22T01:08:01.9339340Z               "line": 701
2026-06-22T01:08:01.9339451Z             }
2026-06-22T01:08:01.9339551Z           ]
2026-06-22T01:08:01.9339660Z         },
2026-06-22T01:08:01.9339761Z         "int": {
2026-06-22T01:08:01.9339870Z           "complete": true,
2026-06-22T01:08:01.9339989Z           "evidence": [
2026-06-22T01:08:01.9340076Z             {
2026-06-22T01:08:01.9340232Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9340337Z               "line": 916
2026-06-22T01:08:01.9340546Z             },
2026-06-22T01:08:01.9340641Z             {
2026-06-22T01:08:01.9340780Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9340889Z               "line": 956
2026-06-22T01:08:01.9340989Z             },
2026-06-22T01:08:01.9341090Z             {
2026-06-22T01:08:01.9341232Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9341347Z               "line": 1003
2026-06-22T01:08:01.9341457Z             },
2026-06-22T01:08:01.9341552Z             {
2026-06-22T01:08:01.9341706Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9341819Z               "line": 1155
2026-06-22T01:08:01.9341919Z             }
2026-06-22T01:08:01.9342021Z           ]
2026-06-22T01:08:01.9342115Z         },
2026-06-22T01:08:01.9342225Z         "unit": {
2026-06-22T01:08:01.9342340Z           "complete": true,
2026-06-22T01:08:01.9342453Z           "evidence": [
2026-06-22T01:08:01.9342554Z             {
2026-06-22T01:08:01.9342707Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.9342825Z               "line": 175
2026-06-22T01:08:01.9342929Z             },
2026-06-22T01:08:01.9343039Z             {
2026-06-22T01:08:01.9343179Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T01:08:01.9343299Z               "line": 195
2026-06-22T01:08:01.9343395Z             }
2026-06-22T01:08:01.9343503Z           ]
2026-06-22T01:08:01.9347253Z         }
2026-06-22T01:08:01.9347405Z       }
2026-06-22T01:08:01.9347511Z     },
2026-06-22T01:08:01.9347615Z     {
2026-06-22T01:08:01.9347735Z       "id": "REQ-REACH-1",
2026-06-22T01:08:01.9347929Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-22T01:08:01.9348060Z       "requiredStages": [
2026-06-22T01:08:01.9348165Z         "impl",
2026-06-22T01:08:01.9348268Z         "unit",
2026-06-22T01:08:01.9348372Z         "int"
2026-06-22T01:08:01.9348478Z       ],
2026-06-22T01:08:01.9348589Z       "stages": {
2026-06-22T01:08:01.9348704Z         "doc": {
2026-06-22T01:08:01.9348829Z           "complete": false,
2026-06-22T01:08:01.9348932Z           "evidence": []
2026-06-22T01:08:01.9349162Z         },
2026-06-22T01:08:01.9349261Z         "impl": {
2026-06-22T01:08:01.9349377Z           "complete": true,
2026-06-22T01:08:01.9349515Z           "evidence": [
2026-06-22T01:08:01.9349619Z             {
2026-06-22T01:08:01.9349782Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9349895Z               "line": 722
2026-06-22T01:08:01.9350006Z             },
2026-06-22T01:08:01.9350101Z             {
2026-06-22T01:08:01.9350234Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.9350350Z               "line": 76
2026-06-22T01:08:01.9350454Z             },
2026-06-22T01:08:01.9350564Z             {
2026-06-22T01:08:01.9350703Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.9350811Z               "line": 222
2026-06-22T01:08:01.9350912Z             },
2026-06-22T01:08:01.9351023Z             {
2026-06-22T01:08:01.9351154Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.9351273Z               "line": 422
2026-06-22T01:08:01.9351384Z             },
2026-06-22T01:08:01.9351483Z             {
2026-06-22T01:08:01.9351612Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.9351859Z               "line": 529
2026-06-22T01:08:01.9351961Z             },
2026-06-22T01:08:01.9352060Z             {
2026-06-22T01:08:01.9352198Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:08:01.9352308Z               "line": 39
2026-06-22T01:08:01.9352418Z             },
2026-06-22T01:08:01.9352517Z             {
2026-06-22T01:08:01.9352656Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.9352770Z               "line": 301
2026-06-22T01:08:01.9352876Z             },
2026-06-22T01:08:01.9352976Z             {
2026-06-22T01:08:01.9353114Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:08:01.9353332Z               "line": 88
2026-06-22T01:08:01.9353432Z             },
2026-06-22T01:08:01.9353537Z             {
2026-06-22T01:08:01.9353683Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:08:01.9353787Z               "line": 98
2026-06-22T01:08:01.9353892Z             },
2026-06-22T01:08:01.9354002Z             {
2026-06-22T01:08:01.9354154Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9354260Z               "line": 233
2026-06-22T01:08:01.9354359Z             }
2026-06-22T01:08:01.9354460Z           ]
2026-06-22T01:08:01.9354570Z         },
2026-06-22T01:08:01.9354674Z         "int": {
2026-06-22T01:08:01.9354794Z           "complete": true,
2026-06-22T01:08:01.9354904Z           "evidence": [
2026-06-22T01:08:01.9355003Z             {
2026-06-22T01:08:01.9355161Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9355266Z               "line": 415
2026-06-22T01:08:01.9355375Z             },
2026-06-22T01:08:01.9355481Z             {
2026-06-22T01:08:01.9355633Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9355743Z               "line": 520
2026-06-22T01:08:01.9355843Z             },
2026-06-22T01:08:01.9355947Z             {
2026-06-22T01:08:01.9356097Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9356219Z               "line": 998
2026-06-22T01:08:01.9356318Z             },
2026-06-22T01:08:01.9356428Z             {
2026-06-22T01:08:01.9356579Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9356692Z               "line": 1383
2026-06-22T01:08:01.9356794Z             }
2026-06-22T01:08:01.9356884Z           ]
2026-06-22T01:08:01.9356988Z         },
2026-06-22T01:08:01.9357094Z         "unit": {
2026-06-22T01:08:01.9357203Z           "complete": true,
2026-06-22T01:08:01.9357317Z           "evidence": [
2026-06-22T01:08:01.9357418Z             {
2026-06-22T01:08:01.9357556Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.9357665Z               "line": 639
2026-06-22T01:08:01.9357776Z             },
2026-06-22T01:08:01.9357875Z             {
2026-06-22T01:08:01.9358010Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T01:08:01.9358119Z               "line": 660
2026-06-22T01:08:01.9358218Z             },
2026-06-22T01:08:01.9358325Z             {
2026-06-22T01:08:01.9358475Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T01:08:01.9358601Z               "line": 771
2026-06-22T01:08:01.9358701Z             },
2026-06-22T01:08:01.9358800Z             {
2026-06-22T01:08:01.9359028Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T01:08:01.9359136Z               "line": 93
2026-06-22T01:08:01.9359235Z             },
2026-06-22T01:08:01.9359336Z             {
2026-06-22T01:08:01.9359483Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T01:08:01.9359598Z               "line": 224
2026-06-22T01:08:01.9359703Z             },
2026-06-22T01:08:01.9359812Z             {
2026-06-22T01:08:01.9359947Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:08:01.9360056Z               "line": 96
2026-06-22T01:08:01.9360155Z             },
2026-06-22T01:08:01.9360261Z             {
2026-06-22T01:08:01.9360399Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T01:08:01.9360610Z               "line": 146
2026-06-22T01:08:01.9360719Z             },
2026-06-22T01:08:01.9360819Z             {
2026-06-22T01:08:01.9360958Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.9361067Z               "line": 698
2026-06-22T01:08:01.9361172Z             },
2026-06-22T01:08:01.9361278Z             {
2026-06-22T01:08:01.9361410Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:08:01.9361516Z               "line": 118
2026-06-22T01:08:01.9361616Z             },
2026-06-22T01:08:01.9361714Z             {
2026-06-22T01:08:01.9361843Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T01:08:01.9362052Z               "line": 148
2026-06-22T01:08:01.9362162Z             },
2026-06-22T01:08:01.9362258Z             {
2026-06-22T01:08:01.9362405Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9362511Z               "line": 928
2026-06-22T01:08:01.9362611Z             }
2026-06-22T01:08:01.9362720Z           ]
2026-06-22T01:08:01.9362821Z         }
2026-06-22T01:08:01.9362925Z       }
2026-06-22T01:08:01.9363025Z     },
2026-06-22T01:08:01.9363131Z     {
2026-06-22T01:08:01.9363249Z       "id": "REQ-REACH-2",
2026-06-22T01:08:01.9363436Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-22T01:08:01.9363545Z       "requiredStages": [],
2026-06-22T01:08:01.9363654Z       "stages": {
2026-06-22T01:08:01.9363760Z         "doc": {
2026-06-22T01:08:01.9363878Z           "complete": false,
2026-06-22T01:08:01.9363983Z           "evidence": []
2026-06-22T01:08:01.9364082Z         },
2026-06-22T01:08:01.9364196Z         "impl": {
2026-06-22T01:08:01.9364319Z           "complete": false,
2026-06-22T01:08:01.9364429Z           "evidence": []
2026-06-22T01:08:01.9364534Z         },
2026-06-22T01:08:01.9364633Z         "int": {
2026-06-22T01:08:01.9364744Z           "complete": false,
2026-06-22T01:08:01.9364853Z           "evidence": []
2026-06-22T01:08:01.9364967Z         },
2026-06-22T01:08:01.9365069Z         "unit": {
2026-06-22T01:08:01.9365187Z           "complete": false,
2026-06-22T01:08:01.9365300Z           "evidence": []
2026-06-22T01:08:01.9365402Z         }
2026-06-22T01:08:01.9365511Z       }
2026-06-22T01:08:01.9365611Z     },
2026-06-22T01:08:01.9365717Z     {
2026-06-22T01:08:01.9365840Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-22T01:08:01.9369445Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-22T01:08:01.9369612Z       "requiredStages": [
2026-06-22T01:08:01.9369710Z         "doc",
2026-06-22T01:08:01.9369844Z         "impl",
2026-06-22T01:08:01.9369939Z         "unit",
2026-06-22T01:08:01.9370043Z         "int"
2026-06-22T01:08:01.9370148Z       ],
2026-06-22T01:08:01.9370254Z       "stages": {
2026-06-22T01:08:01.9370363Z         "doc": {
2026-06-22T01:08:01.9370493Z           "complete": true,
2026-06-22T01:08:01.9370734Z           "evidence": [
2026-06-22T01:08:01.9370841Z             {
2026-06-22T01:08:01.9370969Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9371074Z               "line": 372
2026-06-22T01:08:01.9371180Z             }
2026-06-22T01:08:01.9371279Z           ]
2026-06-22T01:08:01.9371384Z         },
2026-06-22T01:08:01.9371494Z         "impl": {
2026-06-22T01:08:01.9371597Z           "complete": true,
2026-06-22T01:08:01.9371703Z           "evidence": [
2026-06-22T01:08:01.9371804Z             {
2026-06-22T01:08:01.9371951Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.9372052Z               "line": 110
2026-06-22T01:08:01.9372162Z             }
2026-06-22T01:08:01.9372359Z           ]
2026-06-22T01:08:01.9372461Z         },
2026-06-22T01:08:01.9372565Z         "int": {
2026-06-22T01:08:01.9372679Z           "complete": true,
2026-06-22T01:08:01.9372781Z           "evidence": [
2026-06-22T01:08:01.9372885Z             {
2026-06-22T01:08:01.9373057Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-22T01:08:01.9373171Z               "line": 26
2026-06-22T01:08:01.9373275Z             }
2026-06-22T01:08:01.9373381Z           ]
2026-06-22T01:08:01.9373481Z         },
2026-06-22T01:08:01.9373585Z         "unit": {
2026-06-22T01:08:01.9373686Z           "complete": true,
2026-06-22T01:08:01.9373795Z           "evidence": [
2026-06-22T01:08:01.9373905Z             {
2026-06-22T01:08:01.9374035Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T01:08:01.9374143Z               "line": 320
2026-06-22T01:08:01.9374238Z             }
2026-06-22T01:08:01.9374340Z           ]
2026-06-22T01:08:01.9374430Z         }
2026-06-22T01:08:01.9374538Z       }
2026-06-22T01:08:01.9374638Z     },
2026-06-22T01:08:01.9374742Z     {
2026-06-22T01:08:01.9374855Z       "id": "REQ-REL-1",
2026-06-22T01:08:01.9375256Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-22T01:08:01.9375380Z       "requiredStages": [
2026-06-22T01:08:01.9375479Z         "doc",
2026-06-22T01:08:01.9375590Z         "impl"
2026-06-22T01:08:01.9375690Z       ],
2026-06-22T01:08:01.9375799Z       "stages": {
2026-06-22T01:08:01.9375910Z         "doc": {
2026-06-22T01:08:01.9376014Z           "complete": true,
2026-06-22T01:08:01.9376137Z           "evidence": [
2026-06-22T01:08:01.9376238Z             {
2026-06-22T01:08:01.9376491Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-22T01:08:01.9376607Z               "line": 3
2026-06-22T01:08:01.9376705Z             }
2026-06-22T01:08:01.9376805Z           ]
2026-06-22T01:08:01.9376902Z         },
2026-06-22T01:08:01.9377015Z         "impl": {
2026-06-22T01:08:01.9377120Z           "complete": true,
2026-06-22T01:08:01.9377241Z           "evidence": [
2026-06-22T01:08:01.9377334Z             {
2026-06-22T01:08:01.9377491Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T01:08:01.9377610Z               "line": 11
2026-06-22T01:08:01.9377713Z             },
2026-06-22T01:08:01.9377808Z             {
2026-06-22T01:08:01.9377938Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9378046Z               "line": 265
2026-06-22T01:08:01.9378151Z             }
2026-06-22T01:08:01.9378243Z           ]
2026-06-22T01:08:01.9378347Z         },
2026-06-22T01:08:01.9378452Z         "int": {
2026-06-22T01:08:01.9378576Z           "complete": false,
2026-06-22T01:08:01.9378680Z           "evidence": []
2026-06-22T01:08:01.9378786Z         },
2026-06-22T01:08:01.9378900Z         "unit": {
2026-06-22T01:08:01.9379081Z           "complete": false,
2026-06-22T01:08:01.9379206Z           "evidence": []
2026-06-22T01:08:01.9379305Z         }
2026-06-22T01:08:01.9379411Z       }
2026-06-22T01:08:01.9379511Z     },
2026-06-22T01:08:01.9379610Z     {
2026-06-22T01:08:01.9379731Z       "id": "REQ-REL-2",
2026-06-22T01:08:01.9380242Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-22T01:08:01.9380461Z       "requiredStages": [
2026-06-22T01:08:01.9380566Z         "impl",
2026-06-22T01:08:01.9380670Z         "int"
2026-06-22T01:08:01.9380771Z       ],
2026-06-22T01:08:01.9380881Z       "stages": {
2026-06-22T01:08:01.9380990Z         "doc": {
2026-06-22T01:08:01.9381100Z           "complete": true,
2026-06-22T01:08:01.9381215Z           "evidence": [
2026-06-22T01:08:01.9381309Z             {
2026-06-22T01:08:01.9381443Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-22T01:08:01.9381667Z               "line": 6
2026-06-22T01:08:01.9381772Z             }
2026-06-22T01:08:01.9381877Z           ]
2026-06-22T01:08:01.9381977Z         },
2026-06-22T01:08:01.9382078Z         "impl": {
2026-06-22T01:08:01.9382192Z           "complete": true,
2026-06-22T01:08:01.9382302Z           "evidence": [
2026-06-22T01:08:01.9382407Z             {
2026-06-22T01:08:01.9382549Z               "path": ".github/workflows/release.yml",
2026-06-22T01:08:01.9382660Z               "line": 16
2026-06-22T01:08:01.9382759Z             },
2026-06-22T01:08:01.9382868Z             {
2026-06-22T01:08:01.9382996Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9383112Z               "line": 352
2026-06-22T01:08:01.9383211Z             },
2026-06-22T01:08:01.9383311Z             {
2026-06-22T01:08:01.9383450Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9383559Z               "line": 426
2026-06-22T01:08:01.9383665Z             },
2026-06-22T01:08:01.9383765Z             {
2026-06-22T01:08:01.9383898Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9384003Z               "line": 588
2026-06-22T01:08:01.9384108Z             },
2026-06-22T01:08:01.9384208Z             {
2026-06-22T01:08:01.9384337Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9384451Z               "line": 720
2026-06-22T01:08:01.9384557Z             }
2026-06-22T01:08:01.9384657Z           ]
2026-06-22T01:08:01.9384756Z         },
2026-06-22T01:08:01.9384861Z         "int": {
2026-06-22T01:08:01.9384986Z           "complete": true,
2026-06-22T01:08:01.9385098Z           "evidence": [
2026-06-22T01:08:01.9385203Z             {
2026-06-22T01:08:01.9385359Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-22T01:08:01.9385467Z               "line": 13
2026-06-22T01:08:01.9385568Z             }
2026-06-22T01:08:01.9385669Z           ]
2026-06-22T01:08:01.9385773Z         },
2026-06-22T01:08:01.9385878Z         "unit": {
2026-06-22T01:08:01.9385998Z           "complete": false,
2026-06-22T01:08:01.9386111Z           "evidence": []
2026-06-22T01:08:01.9386222Z         }
2026-06-22T01:08:01.9386317Z       }
2026-06-22T01:08:01.9386412Z     },
2026-06-22T01:08:01.9386518Z     {
2026-06-22T01:08:01.9386632Z       "id": "REQ-REL-3",
2026-06-22T01:08:01.9387094Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-22T01:08:01.9387214Z       "requiredStages": [
2026-06-22T01:08:01.9387313Z         "impl",
2026-06-22T01:08:01.9387424Z         "unit"
2026-06-22T01:08:01.9387524Z       ],
2026-06-22T01:08:01.9387628Z       "stages": {
2026-06-22T01:08:01.9387734Z         "doc": {
2026-06-22T01:08:01.9387857Z           "complete": false,
2026-06-22T01:08:01.9387966Z           "evidence": []
2026-06-22T01:08:01.9388075Z         },
2026-06-22T01:08:01.9388179Z         "impl": {
2026-06-22T01:08:01.9388278Z           "complete": true,
2026-06-22T01:08:01.9388402Z           "evidence": [
2026-06-22T01:08:01.9388503Z             {
2026-06-22T01:08:01.9388654Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9388756Z               "line": 237
2026-06-22T01:08:01.9388860Z             },
2026-06-22T01:08:01.9389022Z             {
2026-06-22T01:08:01.9389380Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9389503Z               "line": 289
2026-06-22T01:08:01.9389617Z             },
2026-06-22T01:08:01.9389733Z             {
2026-06-22T01:08:01.9389851Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9389966Z               "line": 329
2026-06-22T01:08:01.9390071Z             },
2026-06-22T01:08:01.9390170Z             {
2026-06-22T01:08:01.9390305Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9390415Z               "line": 353
2026-06-22T01:08:01.9390523Z             },
2026-06-22T01:08:01.9390613Z             {
2026-06-22T01:08:01.9390736Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:01.9390959Z               "line": 394
2026-06-22T01:08:01.9391065Z             }
2026-06-22T01:08:01.9391173Z           ]
2026-06-22T01:08:01.9391278Z         },
2026-06-22T01:08:01.9391379Z         "int": {
2026-06-22T01:08:01.9391493Z           "complete": false,
2026-06-22T01:08:01.9391608Z           "evidence": []
2026-06-22T01:08:01.9391713Z         },
2026-06-22T01:08:01.9391822Z         "unit": {
2026-06-22T01:08:01.9391938Z           "complete": true,
2026-06-22T01:08:01.9392046Z           "evidence": [
2026-06-22T01:08:01.9392151Z             {
2026-06-22T01:08:01.9392304Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9392413Z               "line": 1045
2026-06-22T01:08:01.9392518Z             },
2026-06-22T01:08:01.9392624Z             {
2026-06-22T01:08:01.9392776Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9392882Z               "line": 1104
2026-06-22T01:08:01.9392981Z             }
2026-06-22T01:08:01.9393091Z           ]
2026-06-22T01:08:01.9393196Z         }
2026-06-22T01:08:01.9393305Z       }
2026-06-22T01:08:01.9393404Z     },
2026-06-22T01:08:01.9393509Z     {
2026-06-22T01:08:01.9393624Z       "id": "REQ-RUN-PICKER",
2026-06-22T01:08:01.9398375Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-22T01:08:01.9398550Z       "requiredStages": [
2026-06-22T01:08:01.9398654Z         "doc",
2026-06-22T01:08:01.9398763Z         "impl",
2026-06-22T01:08:01.9398885Z         "unit"
2026-06-22T01:08:01.9399110Z       ],
2026-06-22T01:08:01.9399214Z       "stages": {
2026-06-22T01:08:01.9399321Z         "doc": {
2026-06-22T01:08:01.9399444Z           "complete": true,
2026-06-22T01:08:01.9399557Z           "evidence": [
2026-06-22T01:08:01.9399664Z             {
2026-06-22T01:08:01.9399901Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9400021Z               "line": 349
2026-06-22T01:08:01.9400125Z             }
2026-06-22T01:08:01.9400231Z           ]
2026-06-22T01:08:01.9400331Z         },
2026-06-22T01:08:01.9400435Z         "impl": {
2026-06-22T01:08:01.9400556Z           "complete": true,
2026-06-22T01:08:01.9400664Z           "evidence": [
2026-06-22T01:08:01.9400769Z             {
2026-06-22T01:08:01.9400904Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9401007Z               "line": 958
2026-06-22T01:08:01.9401111Z             },
2026-06-22T01:08:01.9401211Z             {
2026-06-22T01:08:01.9401343Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9401553Z               "line": 968
2026-06-22T01:08:01.9401658Z             },
2026-06-22T01:08:01.9401762Z             {
2026-06-22T01:08:01.9401915Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9402024Z               "line": 9
2026-06-22T01:08:01.9402124Z             },
2026-06-22T01:08:01.9402230Z             {
2026-06-22T01:08:01.9402377Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T01:08:01.9402483Z               "line": 67
2026-06-22T01:08:01.9402587Z             },
2026-06-22T01:08:01.9402696Z             {
2026-06-22T01:08:01.9402837Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T01:08:01.9402950Z               "line": 16
2026-06-22T01:08:01.9403054Z             },
2026-06-22T01:08:01.9403151Z             {
2026-06-22T01:08:01.9403283Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T01:08:01.9403398Z               "line": 254
2026-06-22T01:08:01.9403494Z             },
2026-06-22T01:08:01.9403607Z             {
2026-06-22T01:08:01.9403747Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9403865Z               "line": 11
2026-06-22T01:08:01.9403969Z             },
2026-06-22T01:08:01.9404069Z             {
2026-06-22T01:08:01.9404208Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9404326Z               "line": 115
2026-06-22T01:08:01.9404432Z             },
2026-06-22T01:08:01.9404537Z             {
2026-06-22T01:08:01.9404684Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9404785Z               "line": 554
2026-06-22T01:08:01.9404890Z             },
2026-06-22T01:08:01.9404989Z             {
2026-06-22T01:08:01.9405128Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9405237Z               "line": 635
2026-06-22T01:08:01.9405342Z             },
2026-06-22T01:08:01.9405453Z             {
2026-06-22T01:08:01.9405590Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9405711Z               "line": 694
2026-06-22T01:08:01.9405824Z             },
2026-06-22T01:08:01.9405919Z             {
2026-06-22T01:08:01.9406063Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9406172Z               "line": 747
2026-06-22T01:08:01.9406280Z             },
2026-06-22T01:08:01.9406380Z             {
2026-06-22T01:08:01.9406521Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9406636Z               "line": 785
2026-06-22T01:08:01.9406741Z             },
2026-06-22T01:08:01.9406846Z             {
2026-06-22T01:08:01.9406984Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9407099Z               "line": 8
2026-06-22T01:08:01.9407203Z             }
2026-06-22T01:08:01.9407309Z           ]
2026-06-22T01:08:01.9407418Z         },
2026-06-22T01:08:01.9407527Z         "int": {
2026-06-22T01:08:01.9407647Z           "complete": false,
2026-06-22T01:08:01.9407762Z           "evidence": []
2026-06-22T01:08:01.9407861Z         },
2026-06-22T01:08:01.9407962Z         "unit": {
2026-06-22T01:08:01.9408086Z           "complete": true,
2026-06-22T01:08:01.9408205Z           "evidence": [
2026-06-22T01:08:01.9408301Z             {
2026-06-22T01:08:01.9408439Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9408625Z               "line": 7638
2026-06-22T01:08:01.9408733Z             },
2026-06-22T01:08:01.9408835Z             {
2026-06-22T01:08:01.9409043Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9409152Z               "line": 7649
2026-06-22T01:08:01.9409252Z             },
2026-06-22T01:08:01.9409360Z             {
2026-06-22T01:08:01.9409508Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9409618Z               "line": 879
2026-06-22T01:08:01.9409717Z             },
2026-06-22T01:08:01.9409817Z             {
2026-06-22T01:08:01.9409961Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9410060Z               "line": 928
2026-06-22T01:08:01.9410271Z             },
2026-06-22T01:08:01.9410370Z             {
2026-06-22T01:08:01.9410505Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9410604Z               "line": 979
2026-06-22T01:08:01.9410714Z             },
2026-06-22T01:08:01.9410820Z             {
2026-06-22T01:08:01.9410952Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9411067Z               "line": 996
2026-06-22T01:08:01.9411173Z             },
2026-06-22T01:08:01.9411276Z             {
2026-06-22T01:08:01.9411406Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9411516Z               "line": 1005
2026-06-22T01:08:01.9411619Z             },
2026-06-22T01:08:01.9411723Z             {
2026-06-22T01:08:01.9411871Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9411974Z               "line": 1016
2026-06-22T01:08:01.9412084Z             },
2026-06-22T01:08:01.9412180Z             {
2026-06-22T01:08:01.9412327Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9412438Z               "line": 1038
2026-06-22T01:08:01.9412543Z             },
2026-06-22T01:08:01.9412651Z             {
2026-06-22T01:08:01.9412790Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9412913Z               "line": 1057
2026-06-22T01:08:01.9413014Z             },
2026-06-22T01:08:01.9413119Z             {
2026-06-22T01:08:01.9413266Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9413377Z               "line": 1107
2026-06-22T01:08:01.9413481Z             },
2026-06-22T01:08:01.9413586Z             {
2026-06-22T01:08:01.9413730Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9413833Z               "line": 1136
2026-06-22T01:08:01.9413934Z             },
2026-06-22T01:08:01.9414036Z             {
2026-06-22T01:08:01.9414172Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9414293Z               "line": 1149
2026-06-22T01:08:01.9414388Z             },
2026-06-22T01:08:01.9414496Z             {
2026-06-22T01:08:01.9414634Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9414740Z               "line": 1215
2026-06-22T01:08:01.9414858Z             },
2026-06-22T01:08:01.9414958Z             {
2026-06-22T01:08:01.9415107Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9415215Z               "line": 1256
2026-06-22T01:08:01.9415326Z             },
2026-06-22T01:08:01.9415431Z             {
2026-06-22T01:08:01.9415569Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9415683Z               "line": 1272
2026-06-22T01:08:01.9415788Z             },
2026-06-22T01:08:01.9415893Z             {
2026-06-22T01:08:01.9416036Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9416150Z               "line": 491
2026-06-22T01:08:01.9416261Z             },
2026-06-22T01:08:01.9416356Z             {
2026-06-22T01:08:01.9416494Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9416600Z               "line": 506
2026-06-22T01:08:01.9416703Z             },
2026-06-22T01:08:01.9416798Z             {
2026-06-22T01:08:01.9416941Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9417058Z               "line": 524
2026-06-22T01:08:01.9417278Z             },
2026-06-22T01:08:01.9417392Z             {
2026-06-22T01:08:01.9417535Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9417645Z               "line": 546
2026-06-22T01:08:01.9417740Z             },
2026-06-22T01:08:01.9417845Z             {
2026-06-22T01:08:01.9417988Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9418101Z               "line": 556
2026-06-22T01:08:01.9418212Z             },
2026-06-22T01:08:01.9418317Z             {
2026-06-22T01:08:01.9418460Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T01:08:01.9418565Z               "line": 582
2026-06-22T01:08:01.9418740Z             }
2026-06-22T01:08:01.9418847Z           ]
2026-06-22T01:08:01.9419027Z         }
2026-06-22T01:08:01.9419133Z       }
2026-06-22T01:08:01.9419237Z     },
2026-06-22T01:08:01.9419347Z     {
2026-06-22T01:08:01.9419472Z       "id": "REQ-RUN-SHORTCUT",
2026-06-22T01:08:01.9424146Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-22T01:08:01.9424319Z       "requiredStages": [
2026-06-22T01:08:01.9424442Z         "doc",
2026-06-22T01:08:01.9424553Z         "impl",
2026-06-22T01:08:01.9424653Z         "unit"
2026-06-22T01:08:01.9424757Z       ],
2026-06-22T01:08:01.9424853Z       "stages": {
2026-06-22T01:08:01.9424963Z         "doc": {
2026-06-22T01:08:01.9425080Z           "complete": true,
2026-06-22T01:08:01.9425194Z           "evidence": [
2026-06-22T01:08:01.9425300Z             {
2026-06-22T01:08:01.9425428Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9425542Z               "line": 390
2026-06-22T01:08:01.9425648Z             }
2026-06-22T01:08:01.9425752Z           ]
2026-06-22T01:08:01.9425853Z         },
2026-06-22T01:08:01.9425967Z         "impl": {
2026-06-22T01:08:01.9426081Z           "complete": true,
2026-06-22T01:08:01.9426201Z           "evidence": [
2026-06-22T01:08:01.9426310Z             {
2026-06-22T01:08:01.9426463Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9426577Z               "line": 39
2026-06-22T01:08:01.9426682Z             },
2026-06-22T01:08:01.9426788Z             {
2026-06-22T01:08:01.9426939Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9427054Z               "line": 79
2026-06-22T01:08:01.9427170Z             },
2026-06-22T01:08:01.9427268Z             {
2026-06-22T01:08:01.9427420Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9427623Z               "line": 162
2026-06-22T01:08:01.9427737Z             }
2026-06-22T01:08:01.9427843Z           ]
2026-06-22T01:08:01.9427947Z         },
2026-06-22T01:08:01.9428052Z         "int": {
2026-06-22T01:08:01.9428172Z           "complete": false,
2026-06-22T01:08:01.9428280Z           "evidence": []
2026-06-22T01:08:01.9428386Z         },
2026-06-22T01:08:01.9428496Z         "unit": {
2026-06-22T01:08:01.9428614Z           "complete": true,
2026-06-22T01:08:01.9428725Z           "evidence": [
2026-06-22T01:08:01.9428829Z             {
2026-06-22T01:08:01.9429111Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9429340Z               "line": 206
2026-06-22T01:08:01.9429459Z             },
2026-06-22T01:08:01.9429559Z             {
2026-06-22T01:08:01.9429717Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9429830Z               "line": 222
2026-06-22T01:08:01.9429935Z             },
2026-06-22T01:08:01.9430042Z             {
2026-06-22T01:08:01.9430192Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9430301Z               "line": 238
2026-06-22T01:08:01.9430406Z             },
2026-06-22T01:08:01.9430509Z             {
2026-06-22T01:08:01.9430657Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9430762Z               "line": 251
2026-06-22T01:08:01.9430861Z             },
2026-06-22T01:08:01.9430962Z             {
2026-06-22T01:08:01.9431110Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T01:08:01.9431219Z               "line": 258
2026-06-22T01:08:01.9431330Z             }
2026-06-22T01:08:01.9431425Z           ]
2026-06-22T01:08:01.9431519Z         }
2026-06-22T01:08:01.9431626Z       }
2026-06-22T01:08:01.9431725Z     },
2026-06-22T01:08:01.9431830Z     {
2026-06-22T01:08:01.9431955Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-22T01:08:01.9432173Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-22T01:08:01.9432283Z       "requiredStages": [
2026-06-22T01:08:01.9432392Z         "impl",
2026-06-22T01:08:01.9432492Z         "unit"
2026-06-22T01:08:01.9432603Z       ],
2026-06-22T01:08:01.9432707Z       "stages": {
2026-06-22T01:08:01.9432815Z         "doc": {
2026-06-22T01:08:01.9432930Z           "complete": false,
2026-06-22T01:08:01.9433033Z           "evidence": []
2026-06-22T01:08:01.9433142Z         },
2026-06-22T01:08:01.9433247Z         "impl": {
2026-06-22T01:08:01.9433367Z           "complete": true,
2026-06-22T01:08:01.9433476Z           "evidence": [
2026-06-22T01:08:01.9433582Z             {
2026-06-22T01:08:01.9433738Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9433849Z               "line": 18
2026-06-22T01:08:01.9433949Z             },
2026-06-22T01:08:01.9434048Z             {
2026-06-22T01:08:01.9434197Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9434305Z               "line": 35
2026-06-22T01:08:01.9434420Z             },
2026-06-22T01:08:01.9434521Z             {
2026-06-22T01:08:01.9434659Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9434773Z               "line": 72
2026-06-22T01:08:01.9434870Z             }
2026-06-22T01:08:01.9434978Z           ]
2026-06-22T01:08:01.9435083Z         },
2026-06-22T01:08:01.9435185Z         "int": {
2026-06-22T01:08:01.9435302Z           "complete": false,
2026-06-22T01:08:01.9435408Z           "evidence": []
2026-06-22T01:08:01.9435518Z         },
2026-06-22T01:08:01.9435625Z         "unit": {
2026-06-22T01:08:01.9435740Z           "complete": true,
2026-06-22T01:08:01.9435850Z           "evidence": [
2026-06-22T01:08:01.9435964Z             {
2026-06-22T01:08:01.9436112Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9436218Z               "line": 239
2026-06-22T01:08:01.9436326Z             },
2026-06-22T01:08:01.9436432Z             {
2026-06-22T01:08:01.9436579Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9436799Z               "line": 256
2026-06-22T01:08:01.9436908Z             },
2026-06-22T01:08:01.9437018Z             {
2026-06-22T01:08:01.9437156Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9440714Z               "line": 265
2026-06-22T01:08:01.9440837Z             }
2026-06-22T01:08:01.9440947Z           ]
2026-06-22T01:08:01.9441040Z         }
2026-06-22T01:08:01.9441149Z       }
2026-06-22T01:08:01.9441251Z     },
2026-06-22T01:08:01.9441341Z     {
2026-06-22T01:08:01.9441479Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-22T01:08:01.9441666Z       "title": "Hostable endpoint-types capability declaration",
2026-06-22T01:08:01.9441947Z       "requiredStages": [
2026-06-22T01:08:01.9442056Z         "impl",
2026-06-22T01:08:01.9442156Z         "unit"
2026-06-22T01:08:01.9442261Z       ],
2026-06-22T01:08:01.9442366Z       "stages": {
2026-06-22T01:08:01.9442466Z         "doc": {
2026-06-22T01:08:01.9442590Z           "complete": false,
2026-06-22T01:08:01.9442690Z           "evidence": []
2026-06-22T01:08:01.9442796Z         },
2026-06-22T01:08:01.9442901Z         "impl": {
2026-06-22T01:08:01.9443020Z           "complete": true,
2026-06-22T01:08:01.9443130Z           "evidence": [
2026-06-22T01:08:01.9443230Z             {
2026-06-22T01:08:01.9443385Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9443509Z               "line": 598
2026-06-22T01:08:01.9443607Z             }
2026-06-22T01:08:01.9443707Z           ]
2026-06-22T01:08:01.9443807Z         },
2026-06-22T01:08:01.9443988Z         "int": {
2026-06-22T01:08:01.9444108Z           "complete": false,
2026-06-22T01:08:01.9444218Z           "evidence": []
2026-06-22T01:08:01.9444326Z         },
2026-06-22T01:08:01.9444423Z         "unit": {
2026-06-22T01:08:01.9444542Z           "complete": true,
2026-06-22T01:08:01.9444651Z           "evidence": [
2026-06-22T01:08:01.9444752Z             {
2026-06-22T01:08:01.9444900Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9445009Z               "line": 967
2026-06-22T01:08:01.9445119Z             }
2026-06-22T01:08:01.9445219Z           ]
2026-06-22T01:08:01.9445319Z         }
2026-06-22T01:08:01.9445425Z       }
2026-06-22T01:08:01.9445528Z     },
2026-06-22T01:08:01.9445634Z     {
2026-06-22T01:08:01.9445745Z       "id": "REQ-SEAM-HISTORY",
2026-06-22T01:08:01.9445968Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-22T01:08:01.9446088Z       "requiredStages": [
2026-06-22T01:08:01.9446200Z         "impl",
2026-06-22T01:08:01.9446310Z         "unit",
2026-06-22T01:08:01.9446410Z         "int"
2026-06-22T01:08:01.9446519Z       ],
2026-06-22T01:08:01.9446624Z       "stages": {
2026-06-22T01:08:01.9446730Z         "doc": {
2026-06-22T01:08:01.9446848Z           "complete": false,
2026-06-22T01:08:01.9446959Z           "evidence": []
2026-06-22T01:08:01.9447215Z         },
2026-06-22T01:08:01.9447321Z         "impl": {
2026-06-22T01:08:01.9447445Z           "complete": true,
2026-06-22T01:08:01.9447554Z           "evidence": [
2026-06-22T01:08:01.9447660Z             {
2026-06-22T01:08:01.9447807Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.9447927Z               "line": 24
2026-06-22T01:08:01.9448032Z             },
2026-06-22T01:08:01.9448136Z             {
2026-06-22T01:08:01.9448285Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9448388Z               "line": 22
2026-06-22T01:08:01.9448488Z             }
2026-06-22T01:08:01.9448593Z           ]
2026-06-22T01:08:01.9448687Z         },
2026-06-22T01:08:01.9448800Z         "int": {
2026-06-22T01:08:01.9448920Z           "complete": true,
2026-06-22T01:08:01.9449124Z           "evidence": [
2026-06-22T01:08:01.9449220Z             {
2026-06-22T01:08:01.9449373Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.9449481Z               "line": 260
2026-06-22T01:08:01.9449593Z             }
2026-06-22T01:08:01.9449801Z           ]
2026-06-22T01:08:01.9449903Z         },
2026-06-22T01:08:01.9450002Z         "unit": {
2026-06-22T01:08:01.9450107Z           "complete": true,
2026-06-22T01:08:01.9450227Z           "evidence": [
2026-06-22T01:08:01.9450327Z             {
2026-06-22T01:08:01.9450465Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.9450574Z               "line": 171
2026-06-22T01:08:01.9450679Z             },
2026-06-22T01:08:01.9450785Z             {
2026-06-22T01:08:01.9450917Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.9451022Z               "line": 200
2026-06-22T01:08:01.9451123Z             },
2026-06-22T01:08:01.9451412Z             {
2026-06-22T01:08:01.9451536Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T01:08:01.9451639Z               "line": 220
2026-06-22T01:08:01.9451744Z             },
2026-06-22T01:08:01.9451849Z             {
2026-06-22T01:08:01.9451991Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9452107Z               "line": 199
2026-06-22T01:08:01.9452212Z             },
2026-06-22T01:08:01.9452306Z             {
2026-06-22T01:08:01.9452441Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9452550Z               "line": 219
2026-06-22T01:08:01.9452645Z             },
2026-06-22T01:08:01.9452741Z             {
2026-06-22T01:08:01.9452879Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9452988Z               "line": 244
2026-06-22T01:08:01.9453094Z             },
2026-06-22T01:08:01.9453193Z             {
2026-06-22T01:08:01.9453332Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9453442Z               "line": 276
2026-06-22T01:08:01.9453541Z             },
2026-06-22T01:08:01.9453642Z             {
2026-06-22T01:08:01.9453776Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9453893Z               "line": 297
2026-06-22T01:08:01.9453993Z             },
2026-06-22T01:08:01.9454097Z             {
2026-06-22T01:08:01.9454224Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T01:08:01.9454339Z               "line": 324
2026-06-22T01:08:01.9454430Z             }
2026-06-22T01:08:01.9454525Z           ]
2026-06-22T01:08:01.9454630Z         }
2026-06-22T01:08:01.9454731Z       }
2026-06-22T01:08:01.9454835Z     },
2026-06-22T01:08:01.9454925Z     {
2026-06-22T01:08:01.9455040Z       "id": "REQ-SEAM-INJECT",
2026-06-22T01:08:01.9455230Z       "title": "inject-input methods configurable per activity-state",
2026-06-22T01:08:01.9455350Z       "requiredStages": [
2026-06-22T01:08:01.9455455Z         "impl",
2026-06-22T01:08:01.9455564Z         "unit"
2026-06-22T01:08:01.9455665Z       ],
2026-06-22T01:08:01.9455770Z       "stages": {
2026-06-22T01:08:01.9455874Z         "doc": {
2026-06-22T01:08:01.9455999Z           "complete": false,
2026-06-22T01:08:01.9456103Z           "evidence": []
2026-06-22T01:08:01.9456209Z         },
2026-06-22T01:08:01.9456314Z         "impl": {
2026-06-22T01:08:01.9456427Z           "complete": true,
2026-06-22T01:08:01.9456533Z           "evidence": [
2026-06-22T01:08:01.9456638Z             {
2026-06-22T01:08:01.9456779Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9456894Z               "line": 19
2026-06-22T01:08:01.9457000Z             },
2026-06-22T01:08:01.9457103Z             {
2026-06-22T01:08:01.9457242Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9457357Z               "line": 111
2026-06-22T01:08:01.9457461Z             }
2026-06-22T01:08:01.9457567Z           ]
2026-06-22T01:08:01.9457672Z         },
2026-06-22T01:08:01.9457780Z         "int": {
2026-06-22T01:08:01.9457901Z           "complete": false,
2026-06-22T01:08:01.9458005Z           "evidence": []
2026-06-22T01:08:01.9458109Z         },
2026-06-22T01:08:01.9458211Z         "unit": {
2026-06-22T01:08:01.9458314Z           "complete": true,
2026-06-22T01:08:01.9458429Z           "evidence": [
2026-06-22T01:08:01.9458638Z             {
2026-06-22T01:08:01.9458777Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9458892Z               "line": 345
2026-06-22T01:08:01.9459081Z             },
2026-06-22T01:08:01.9459181Z             {
2026-06-22T01:08:01.9459322Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9459437Z               "line": 365
2026-06-22T01:08:01.9459542Z             }
2026-06-22T01:08:01.9459632Z           ]
2026-06-22T01:08:01.9459737Z         }
2026-06-22T01:08:01.9459838Z       }
2026-06-22T01:08:01.9459928Z     },
2026-06-22T01:08:01.9460028Z     {
2026-06-22T01:08:01.9460148Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-22T01:08:01.9460415Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-22T01:08:01.9460519Z       "requiredStages": [
2026-06-22T01:08:01.9460619Z         "impl",
2026-06-22T01:08:01.9460720Z         "unit"
2026-06-22T01:08:01.9460825Z       ],
2026-06-22T01:08:01.9460929Z       "stages": {
2026-06-22T01:08:01.9461045Z         "doc": {
2026-06-22T01:08:01.9461163Z           "complete": false,
2026-06-22T01:08:01.9461267Z           "evidence": []
2026-06-22T01:08:01.9461369Z         },
2026-06-22T01:08:01.9461473Z         "impl": {
2026-06-22T01:08:01.9461582Z           "complete": true,
2026-06-22T01:08:01.9461689Z           "evidence": [
2026-06-22T01:08:01.9461793Z             {
2026-06-22T01:08:01.9461934Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9462044Z               "line": 18
2026-06-22T01:08:01.9462152Z             },
2026-06-22T01:08:01.9462251Z             {
2026-06-22T01:08:01.9462390Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9462504Z               "line": 431
2026-06-22T01:08:01.9462604Z             }
2026-06-22T01:08:01.9462710Z           ]
2026-06-22T01:08:01.9462809Z         },
2026-06-22T01:08:01.9462914Z         "int": {
2026-06-22T01:08:01.9463025Z           "complete": false,
2026-06-22T01:08:01.9463134Z           "evidence": []
2026-06-22T01:08:01.9463238Z         },
2026-06-22T01:08:01.9463335Z         "unit": {
2026-06-22T01:08:01.9463449Z           "complete": true,
2026-06-22T01:08:01.9463553Z           "evidence": [
2026-06-22T01:08:01.9463659Z             {
2026-06-22T01:08:01.9463791Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9463902Z               "line": 881
2026-06-22T01:08:01.9464007Z             },
2026-06-22T01:08:01.9464111Z             {
2026-06-22T01:08:01.9464255Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9464364Z               "line": 891
2026-06-22T01:08:01.9464472Z             }
2026-06-22T01:08:01.9464572Z           ]
2026-06-22T01:08:01.9464681Z         }
2026-06-22T01:08:01.9464780Z       }
2026-06-22T01:08:01.9464875Z     },
2026-06-22T01:08:01.9464981Z     {
2026-06-22T01:08:01.9465099Z       "id": "REQ-SEAM-PSYCHE",
2026-06-22T01:08:01.9465267Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-22T01:08:01.9465381Z       "requiredStages": [
2026-06-22T01:08:01.9465480Z         "impl",
2026-06-22T01:08:01.9465577Z         "unit",
2026-06-22T01:08:01.9465677Z         "int"
2026-06-22T01:08:01.9465781Z       ],
2026-06-22T01:08:01.9465887Z       "stages": {
2026-06-22T01:08:01.9465986Z         "doc": {
2026-06-22T01:08:01.9466091Z           "complete": false,
2026-06-22T01:08:01.9466211Z           "evidence": []
2026-06-22T01:08:01.9466311Z         },
2026-06-22T01:08:01.9466420Z         "impl": {
2026-06-22T01:08:01.9466540Z           "complete": true,
2026-06-22T01:08:01.9466649Z           "evidence": [
2026-06-22T01:08:01.9466754Z             {
2026-06-22T01:08:01.9466883Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:08:01.9467002Z               "line": 19
2026-06-22T01:08:01.9467103Z             },
2026-06-22T01:08:01.9467208Z             {
2026-06-22T01:08:01.9467349Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T01:08:01.9467454Z               "line": 12
2026-06-22T01:08:01.9467560Z             },
2026-06-22T01:08:01.9467764Z             {
2026-06-22T01:08:01.9467898Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9468006Z               "line": 301
2026-06-22T01:08:01.9468113Z             }
2026-06-22T01:08:01.9468217Z           ]
2026-06-22T01:08:01.9468317Z         },
2026-06-22T01:08:01.9468418Z         "int": {
2026-06-22T01:08:01.9468532Z           "complete": true,
2026-06-22T01:08:01.9468645Z           "evidence": [
2026-06-22T01:08:01.9468747Z             {
2026-06-22T01:08:01.9468899Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.9469095Z               "line": 259
2026-06-22T01:08:01.9469304Z             }
2026-06-22T01:08:01.9469415Z           ]
2026-06-22T01:08:01.9469514Z         },
2026-06-22T01:08:01.9469623Z         "unit": {
2026-06-22T01:08:01.9469741Z           "complete": true,
2026-06-22T01:08:01.9469849Z           "evidence": [
2026-06-22T01:08:01.9469958Z             {
2026-06-22T01:08:01.9470098Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:08:01.9470202Z               "line": 195
2026-06-22T01:08:01.9470302Z             },
2026-06-22T01:08:01.9470408Z             {
2026-06-22T01:08:01.9470545Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:08:01.9470656Z               "line": 202
2026-06-22T01:08:01.9470760Z             },
2026-06-22T01:08:01.9470860Z             {
2026-06-22T01:08:01.9470994Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T01:08:01.9471103Z               "line": 225
2026-06-22T01:08:01.9471212Z             },
2026-06-22T01:08:01.9471313Z             {
2026-06-22T01:08:01.9471447Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T01:08:01.9471556Z               "line": 106
2026-06-22T01:08:01.9471657Z             },
2026-06-22T01:08:01.9471760Z             {
2026-06-22T01:08:01.9471900Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T01:08:01.9472005Z               "line": 137
2026-06-22T01:08:01.9472104Z             },
2026-06-22T01:08:01.9472205Z             {
2026-06-22T01:08:01.9472344Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T01:08:01.9472456Z               "line": 161
2026-06-22T01:08:01.9472561Z             }
2026-06-22T01:08:01.9472661Z           ]
2026-06-22T01:08:01.9472764Z         }
2026-06-22T01:08:01.9472869Z       }
2026-06-22T01:08:01.9472969Z     },
2026-06-22T01:08:01.9473069Z     {
2026-06-22T01:08:01.9473183Z       "id": "REQ-SEAM-RESUME",
2026-06-22T01:08:01.9473407Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-22T01:08:01.9473508Z       "requiredStages": [
2026-06-22T01:08:01.9473622Z         "impl",
2026-06-22T01:08:01.9473727Z         "unit"
2026-06-22T01:08:01.9473818Z       ],
2026-06-22T01:08:01.9473919Z       "stages": {
2026-06-22T01:08:01.9474023Z         "doc": {
2026-06-22T01:08:01.9474142Z           "complete": false,
2026-06-22T01:08:01.9474252Z           "evidence": []
2026-06-22T01:08:01.9474361Z         },
2026-06-22T01:08:01.9474467Z         "impl": {
2026-06-22T01:08:01.9474581Z           "complete": true,
2026-06-22T01:08:01.9474690Z           "evidence": [
2026-06-22T01:08:01.9474787Z             {
2026-06-22T01:08:01.9474929Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.9475033Z               "line": 19
2026-06-22T01:08:01.9475137Z             }
2026-06-22T01:08:01.9475237Z           ]
2026-06-22T01:08:01.9475335Z         },
2026-06-22T01:08:01.9475436Z         "int": {
2026-06-22T01:08:01.9475541Z           "complete": false,
2026-06-22T01:08:01.9475654Z           "evidence": []
2026-06-22T01:08:01.9475755Z         },
2026-06-22T01:08:01.9475860Z         "unit": {
2026-06-22T01:08:01.9475969Z           "complete": true,
2026-06-22T01:08:01.9476084Z           "evidence": [
2026-06-22T01:08:01.9476194Z             {
2026-06-22T01:08:01.9476327Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.9476447Z               "line": 201
2026-06-22T01:08:01.9476642Z             },
2026-06-22T01:08:01.9476738Z             {
2026-06-22T01:08:01.9476876Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.9476994Z               "line": 223
2026-06-22T01:08:01.9477101Z             },
2026-06-22T01:08:01.9477204Z             {
2026-06-22T01:08:01.9477339Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T01:08:01.9477444Z               "line": 244
2026-06-22T01:08:01.9477552Z             }
2026-06-22T01:08:01.9477659Z           ]
2026-06-22T01:08:01.9477754Z         }
2026-06-22T01:08:01.9477857Z       }
2026-06-22T01:08:01.9477947Z     },
2026-06-22T01:08:01.9478053Z     {
2026-06-22T01:08:01.9478233Z       "id": "REQ-SEAM-SPAWN",
2026-06-22T01:08:01.9478358Z       "title": "spawn-session seam",
2026-06-22T01:08:01.9478482Z       "requiredStages": [
2026-06-22T01:08:01.9478585Z         "impl",
2026-06-22T01:08:01.9478692Z         "unit"
2026-06-22T01:08:01.9478787Z       ],
2026-06-22T01:08:01.9478900Z       "stages": {
2026-06-22T01:08:01.9479078Z         "doc": {
2026-06-22T01:08:01.9479187Z           "complete": false,
2026-06-22T01:08:01.9479303Z           "evidence": []
2026-06-22T01:08:01.9479426Z         },
2026-06-22T01:08:01.9479540Z         "impl": {
2026-06-22T01:08:01.9479646Z           "complete": true,
2026-06-22T01:08:01.9479759Z           "evidence": [
2026-06-22T01:08:01.9479859Z             {
2026-06-22T01:08:01.9480012Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9480125Z               "line": 20
2026-06-22T01:08:01.9480225Z             }
2026-06-22T01:08:01.9480330Z           ]
2026-06-22T01:08:01.9480429Z         },
2026-06-22T01:08:01.9480547Z         "int": {
2026-06-22T01:08:01.9480653Z           "complete": false,
2026-06-22T01:08:01.9480772Z           "evidence": []
2026-06-22T01:08:01.9480871Z         },
2026-06-22T01:08:01.9480978Z         "unit": {
2026-06-22T01:08:01.9481096Z           "complete": true,
2026-06-22T01:08:01.9481201Z           "evidence": [
2026-06-22T01:08:01.9481306Z             {
2026-06-22T01:08:01.9481457Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9481564Z               "line": 608
2026-06-22T01:08:01.9481659Z             },
2026-06-22T01:08:01.9481767Z             {
2026-06-22T01:08:01.9481917Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9482012Z               "line": 615
2026-06-22T01:08:01.9482116Z             },
2026-06-22T01:08:01.9482208Z             {
2026-06-22T01:08:01.9482360Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9482465Z               "line": 721
2026-06-22T01:08:01.9482556Z             },
2026-06-22T01:08:01.9482664Z             {
2026-06-22T01:08:01.9482814Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9482922Z               "line": 727
2026-06-22T01:08:01.9483035Z             },
2026-06-22T01:08:01.9483131Z             {
2026-06-22T01:08:01.9483272Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9483386Z               "line": 752
2026-06-22T01:08:01.9483491Z             },
2026-06-22T01:08:01.9483592Z             {
2026-06-22T01:08:01.9483738Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T01:08:01.9483849Z               "line": 789
2026-06-22T01:08:01.9483953Z             }
2026-06-22T01:08:01.9484058Z           ]
2026-06-22T01:08:01.9484159Z         }
2026-06-22T01:08:01.9484264Z       }
2026-06-22T01:08:01.9484354Z     },
2026-06-22T01:08:01.9484493Z     {
2026-06-22T01:08:01.9484616Z       "id": "REQ-SEAM-UPDATE",
2026-06-22T01:08:01.9484817Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-22T01:08:01.9484945Z       "requiredStages": [
2026-06-22T01:08:01.9485047Z         "impl",
2026-06-22T01:08:01.9485151Z         "unit"
2026-06-22T01:08:01.9485251Z       ],
2026-06-22T01:08:01.9485357Z       "stages": {
2026-06-22T01:08:01.9485457Z         "doc": {
2026-06-22T01:08:01.9485564Z           "complete": false,
2026-06-22T01:08:01.9485792Z           "evidence": []
2026-06-22T01:08:01.9485895Z         },
2026-06-22T01:08:01.9486006Z         "impl": {
2026-06-22T01:08:01.9486121Z           "complete": true,
2026-06-22T01:08:01.9486234Z           "evidence": [
2026-06-22T01:08:01.9486334Z             {
2026-06-22T01:08:01.9486506Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9486620Z               "line": 28
2026-06-22T01:08:01.9486712Z             },
2026-06-22T01:08:01.9486816Z             {
2026-06-22T01:08:01.9486974Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9487078Z               "line": 88
2026-06-22T01:08:01.9487303Z             }
2026-06-22T01:08:01.9487421Z           ]
2026-06-22T01:08:01.9487526Z         },
2026-06-22T01:08:01.9487632Z         "int": {
2026-06-22T01:08:01.9487740Z           "complete": false,
2026-06-22T01:08:01.9487865Z           "evidence": []
2026-06-22T01:08:01.9487971Z         },
2026-06-22T01:08:01.9488079Z         "unit": {
2026-06-22T01:08:01.9488199Z           "complete": true,
2026-06-22T01:08:01.9488300Z           "evidence": [
2026-06-22T01:08:01.9488403Z             {
2026-06-22T01:08:01.9488560Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9488666Z               "line": 326
2026-06-22T01:08:01.9488769Z             },
2026-06-22T01:08:01.9488870Z             {
2026-06-22T01:08:01.9489113Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9489224Z               "line": 337
2026-06-22T01:08:01.9489323Z             }
2026-06-22T01:08:01.9489437Z           ]
2026-06-22T01:08:01.9489528Z         }
2026-06-22T01:08:01.9489643Z       }
2026-06-22T01:08:01.9489737Z     },
2026-06-22T01:08:01.9489843Z     {
2026-06-22T01:08:01.9489952Z       "id": "REQ-SEC-1",
2026-06-22T01:08:01.9490376Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-22T01:08:01.9490502Z       "requiredStages": [
2026-06-22T01:08:01.9490605Z         "impl",
2026-06-22T01:08:01.9490714Z         "unit"
2026-06-22T01:08:01.9490809Z       ],
2026-06-22T01:08:01.9490913Z       "stages": {
2026-06-22T01:08:01.9491022Z         "doc": {
2026-06-22T01:08:01.9491136Z           "complete": false,
2026-06-22T01:08:01.9491247Z           "evidence": []
2026-06-22T01:08:01.9491351Z         },
2026-06-22T01:08:01.9491451Z         "impl": {
2026-06-22T01:08:01.9491561Z           "complete": true,
2026-06-22T01:08:01.9491670Z           "evidence": [
2026-06-22T01:08:01.9491776Z             {
2026-06-22T01:08:01.9491923Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.9492042Z               "line": 86
2026-06-22T01:08:01.9492143Z             },
2026-06-22T01:08:01.9492247Z             {
2026-06-22T01:08:01.9492395Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.9492505Z               "line": 116
2026-06-22T01:08:01.9492600Z             },
2026-06-22T01:08:01.9492705Z             {
2026-06-22T01:08:01.9492848Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.9492953Z               "line": 130
2026-06-22T01:08:01.9493059Z             },
2026-06-22T01:08:01.9493158Z             {
2026-06-22T01:08:01.9493301Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9493412Z               "line": 109
2026-06-22T01:08:01.9493515Z             },
2026-06-22T01:08:01.9493624Z             {
2026-06-22T01:08:01.9493753Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9493865Z               "line": 130
2026-06-22T01:08:01.9493975Z             },
2026-06-22T01:08:01.9494061Z             {
2026-06-22T01:08:01.9494199Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9494303Z               "line": 143
2026-06-22T01:08:01.9494414Z             },
2026-06-22T01:08:01.9494518Z             {
2026-06-22T01:08:01.9494662Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9494875Z               "line": 209
2026-06-22T01:08:01.9494982Z             },
2026-06-22T01:08:01.9495076Z             {
2026-06-22T01:08:01.9495204Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9495320Z               "line": 235
2026-06-22T01:08:01.9495420Z             },
2026-06-22T01:08:01.9495519Z             {
2026-06-22T01:08:01.9495678Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9495796Z               "line": 5295
2026-06-22T01:08:01.9495907Z             }
2026-06-22T01:08:01.9496007Z           ]
2026-06-22T01:08:01.9496110Z         },
2026-06-22T01:08:01.9496310Z         "int": {
2026-06-22T01:08:01.9496436Z           "complete": false,
2026-06-22T01:08:01.9496551Z           "evidence": []
2026-06-22T01:08:01.9496656Z         },
2026-06-22T01:08:01.9496765Z         "unit": {
2026-06-22T01:08:01.9496880Z           "complete": true,
2026-06-22T01:08:01.9496995Z           "evidence": [
2026-06-22T01:08:01.9497094Z             {
2026-06-22T01:08:01.9497243Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.9497357Z               "line": 142
2026-06-22T01:08:01.9497456Z             },
2026-06-22T01:08:01.9497558Z             {
2026-06-22T01:08:01.9497696Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.9497814Z               "line": 194
2026-06-22T01:08:01.9497920Z             },
2026-06-22T01:08:01.9498025Z             {
2026-06-22T01:08:01.9498183Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T01:08:01.9498287Z               "line": 235
2026-06-22T01:08:01.9498396Z             },
2026-06-22T01:08:01.9498502Z             {
2026-06-22T01:08:01.9498663Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-22T01:08:01.9498779Z               "line": 140
2026-06-22T01:08:01.9498907Z             },
2026-06-22T01:08:01.9499077Z             {
2026-06-22T01:08:01.9499216Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9499353Z               "line": 247
2026-06-22T01:08:01.9499454Z             },
2026-06-22T01:08:01.9499559Z             {
2026-06-22T01:08:01.9499702Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9499822Z               "line": 277
2026-06-22T01:08:01.9499922Z             },
2026-06-22T01:08:01.9500011Z             {
2026-06-22T01:08:01.9500156Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9500269Z               "line": 310
2026-06-22T01:08:01.9500374Z             },
2026-06-22T01:08:01.9500475Z             {
2026-06-22T01:08:01.9500607Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9500728Z               "line": 329
2026-06-22T01:08:01.9500832Z             },
2026-06-22T01:08:01.9500936Z             {
2026-06-22T01:08:01.9501067Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9501184Z               "line": 362
2026-06-22T01:08:01.9501284Z             },
2026-06-22T01:08:01.9501389Z             {
2026-06-22T01:08:01.9501529Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T01:08:01.9501643Z               "line": 386
2026-06-22T01:08:01.9501740Z             },
2026-06-22T01:08:01.9501835Z             {
2026-06-22T01:08:01.9501973Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9502083Z               "line": 8296
2026-06-22T01:08:01.9502192Z             }
2026-06-22T01:08:01.9502297Z           ]
2026-06-22T01:08:01.9502393Z         }
2026-06-22T01:08:01.9502502Z       }
2026-06-22T01:08:01.9502602Z     },
2026-06-22T01:08:01.9502703Z     {
2026-06-22T01:08:01.9502831Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-22T01:08:01.9506562Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-22T01:08:01.9506940Z       "requiredStages": [
2026-06-22T01:08:01.9507077Z         "impl",
2026-06-22T01:08:01.9507178Z         "unit",
2026-06-22T01:08:01.9507288Z         "int"
2026-06-22T01:08:01.9507392Z       ],
2026-06-22T01:08:01.9507503Z       "stages": {
2026-06-22T01:08:01.9507612Z         "doc": {
2026-06-22T01:08:01.9507721Z           "complete": false,
2026-06-22T01:08:01.9507841Z           "evidence": []
2026-06-22T01:08:01.9507941Z         },
2026-06-22T01:08:01.9508041Z         "impl": {
2026-06-22T01:08:01.9508151Z           "complete": true,
2026-06-22T01:08:01.9508261Z           "evidence": [
2026-06-22T01:08:01.9508361Z             {
2026-06-22T01:08:01.9508499Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.9508613Z               "line": 1160
2026-06-22T01:08:01.9508714Z             },
2026-06-22T01:08:01.9508814Z             {
2026-06-22T01:08:01.9509039Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9509162Z               "line": 1976
2026-06-22T01:08:01.9509262Z             },
2026-06-22T01:08:01.9509382Z             {
2026-06-22T01:08:01.9509514Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9509623Z               "line": 2850
2026-06-22T01:08:01.9509728Z             }
2026-06-22T01:08:01.9509834Z           ]
2026-06-22T01:08:01.9509923Z         },
2026-06-22T01:08:01.9510028Z         "int": {
2026-06-22T01:08:01.9510139Z           "complete": true,
2026-06-22T01:08:01.9510262Z           "evidence": [
2026-06-22T01:08:01.9510358Z             {
2026-06-22T01:08:01.9510515Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.9510639Z               "line": 189
2026-06-22T01:08:01.9510735Z             },
2026-06-22T01:08:01.9510848Z             {
2026-06-22T01:08:01.9510997Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T01:08:01.9511115Z               "line": 524
2026-06-22T01:08:01.9511215Z             }
2026-06-22T01:08:01.9511317Z           ]
2026-06-22T01:08:01.9511425Z         },
2026-06-22T01:08:01.9511520Z         "unit": {
2026-06-22T01:08:01.9511646Z           "complete": true,
2026-06-22T01:08:01.9511758Z           "evidence": [
2026-06-22T01:08:01.9511863Z             {
2026-06-22T01:08:01.9512006Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:01.9512118Z               "line": 980
2026-06-22T01:08:01.9512223Z             },
2026-06-22T01:08:01.9512329Z             {
2026-06-22T01:08:01.9512471Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9512581Z               "line": 7486
2026-06-22T01:08:01.9512681Z             }
2026-06-22T01:08:01.9512781Z           ]
2026-06-22T01:08:01.9512877Z         }
2026-06-22T01:08:01.9512986Z       }
2026-06-22T01:08:01.9513090Z     },
2026-06-22T01:08:01.9513187Z     {
2026-06-22T01:08:01.9513315Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-22T01:08:01.9520202Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-22T01:08:01.9520589Z       "requiredStages": [
2026-06-22T01:08:01.9520694Z         "doc",
2026-06-22T01:08:01.9520802Z         "impl",
2026-06-22T01:08:01.9520909Z         "unit",
2026-06-22T01:08:01.9520999Z         "int"
2026-06-22T01:08:01.9521108Z       ],
2026-06-22T01:08:01.9521214Z       "stages": {
2026-06-22T01:08:01.9521323Z         "doc": {
2026-06-22T01:08:01.9521441Z           "complete": true,
2026-06-22T01:08:01.9521539Z           "evidence": [
2026-06-22T01:08:01.9521638Z             {
2026-06-22T01:08:01.9521805Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T01:08:01.9521920Z               "line": 130
2026-06-22T01:08:01.9522018Z             },
2026-06-22T01:08:01.9522134Z             {
2026-06-22T01:08:01.9522268Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.9522366Z               "line": 96
2026-06-22T01:08:01.9522476Z             }
2026-06-22T01:08:01.9522576Z           ]
2026-06-22T01:08:01.9522673Z         },
2026-06-22T01:08:01.9522778Z         "impl": {
2026-06-22T01:08:01.9522903Z           "complete": true,
2026-06-22T01:08:01.9523016Z           "evidence": [
2026-06-22T01:08:01.9523112Z             {
2026-06-22T01:08:01.9523280Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.9523389Z               "line": 77
2026-06-22T01:08:01.9523490Z             },
2026-06-22T01:08:01.9523609Z             {
2026-06-22T01:08:01.9523781Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.9523904Z               "line": 183
2026-06-22T01:08:01.9524033Z             },
2026-06-22T01:08:01.9524138Z             {
2026-06-22T01:08:01.9524290Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9524406Z               "line": 222
2026-06-22T01:08:01.9524510Z             },
2026-06-22T01:08:01.9524619Z             {
2026-06-22T01:08:01.9524768Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9524958Z               "line": 71
2026-06-22T01:08:01.9525059Z             },
2026-06-22T01:08:01.9525154Z             {
2026-06-22T01:08:01.9525304Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9525414Z               "line": 176
2026-06-22T01:08:01.9525526Z             }
2026-06-22T01:08:01.9525640Z           ]
2026-06-22T01:08:01.9525737Z         },
2026-06-22T01:08:01.9525846Z         "int": {
2026-06-22T01:08:01.9525965Z           "complete": true,
2026-06-22T01:08:01.9526080Z           "evidence": [
2026-06-22T01:08:01.9526180Z             {
2026-06-22T01:08:01.9526381Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-22T01:08:01.9526599Z               "line": 25
2026-06-22T01:08:01.9526710Z             }
2026-06-22T01:08:01.9526814Z           ]
2026-06-22T01:08:01.9526943Z         },
2026-06-22T01:08:01.9532399Z         "unit": {
2026-06-22T01:08:01.9532560Z           "complete": true,
2026-06-22T01:08:01.9532684Z           "evidence": [
2026-06-22T01:08:01.9532804Z             {
2026-06-22T01:08:01.9532984Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.9533088Z               "line": 341
2026-06-22T01:08:01.9533196Z             },
2026-06-22T01:08:01.9533300Z             {
2026-06-22T01:08:01.9533468Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T01:08:01.9533581Z               "line": 391
2026-06-22T01:08:01.9533687Z             },
2026-06-22T01:08:01.9533792Z             {
2026-06-22T01:08:01.9533949Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9534069Z               "line": 1244
2026-06-22T01:08:01.9534173Z             },
2026-06-22T01:08:01.9534302Z             {
2026-06-22T01:08:01.9534464Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9534583Z               "line": 184
2026-06-22T01:08:01.9534703Z             },
2026-06-22T01:08:01.9534808Z             {
2026-06-22T01:08:01.9534975Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9535103Z               "line": 208
2026-06-22T01:08:01.9535212Z             },
2026-06-22T01:08:01.9535314Z             {
2026-06-22T01:08:01.9535470Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9535581Z               "line": 236
2026-06-22T01:08:01.9535681Z             },
2026-06-22T01:08:01.9535788Z             {
2026-06-22T01:08:01.9535941Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T01:08:01.9536054Z               "line": 945
2026-06-22T01:08:01.9536167Z             }
2026-06-22T01:08:01.9536282Z           ]
2026-06-22T01:08:01.9536393Z         }
2026-06-22T01:08:01.9536496Z       }
2026-06-22T01:08:01.9536603Z     },
2026-06-22T01:08:01.9536708Z     {
2026-06-22T01:08:01.9536825Z       "id": "REQ-SHELL-1",
2026-06-22T01:08:01.9537765Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-22T01:08:01.9537890Z       "requiredStages": [
2026-06-22T01:08:01.9537993Z         "impl",
2026-06-22T01:08:01.9538104Z         "unit",
2026-06-22T01:08:01.9538205Z         "int"
2026-06-22T01:08:01.9538313Z       ],
2026-06-22T01:08:01.9538417Z       "stages": {
2026-06-22T01:08:01.9538522Z         "doc": {
2026-06-22T01:08:01.9538630Z           "complete": false,
2026-06-22T01:08:01.9538743Z           "evidence": []
2026-06-22T01:08:01.9538854Z         },
2026-06-22T01:08:01.9539044Z         "impl": {
2026-06-22T01:08:01.9539174Z           "complete": true,
2026-06-22T01:08:01.9539278Z           "evidence": [
2026-06-22T01:08:01.9539392Z             {
2026-06-22T01:08:01.9539589Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9539697Z               "line": 189
2026-06-22T01:08:01.9539804Z             },
2026-06-22T01:08:01.9540031Z             {
2026-06-22T01:08:01.9540194Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9540293Z               "line": 268
2026-06-22T01:08:01.9540404Z             },
2026-06-22T01:08:01.9540503Z             {
2026-06-22T01:08:01.9540656Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9540763Z               "line": 27
2026-06-22T01:08:01.9540865Z             },
2026-06-22T01:08:01.9540971Z             {
2026-06-22T01:08:01.9541119Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9541242Z               "line": 52
2026-06-22T01:08:01.9541443Z             },
2026-06-22T01:08:01.9541556Z             {
2026-06-22T01:08:01.9541704Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9541814Z               "line": 144
2026-06-22T01:08:01.9541923Z             },
2026-06-22T01:08:01.9542025Z             {
2026-06-22T01:08:01.9542181Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9542296Z               "line": 176
2026-06-22T01:08:01.9542405Z             },
2026-06-22T01:08:01.9542496Z             {
2026-06-22T01:08:01.9542644Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9542758Z               "line": 22
2026-06-22T01:08:01.9542858Z             },
2026-06-22T01:08:01.9542964Z             {
2026-06-22T01:08:01.9543110Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9543215Z               "line": 65
2026-06-22T01:08:01.9543322Z             },
2026-06-22T01:08:01.9543425Z             {
2026-06-22T01:08:01.9543577Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9543682Z               "line": 76
2026-06-22T01:08:01.9543790Z             },
2026-06-22T01:08:01.9543980Z             {
2026-06-22T01:08:01.9544128Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9544237Z               "line": 151
2026-06-22T01:08:01.9544348Z             },
2026-06-22T01:08:01.9544452Z             {
2026-06-22T01:08:01.9544591Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9544705Z               "line": 210
2026-06-22T01:08:01.9544814Z             },
2026-06-22T01:08:01.9544920Z             {
2026-06-22T01:08:01.9545062Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9545177Z               "line": 259
2026-06-22T01:08:01.9545273Z             },
2026-06-22T01:08:01.9545368Z             {
2026-06-22T01:08:01.9545516Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9545625Z               "line": 281
2026-06-22T01:08:01.9545735Z             },
2026-06-22T01:08:01.9545836Z             {
2026-06-22T01:08:01.9545982Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9546097Z               "line": 294
2026-06-22T01:08:01.9546203Z             },
2026-06-22T01:08:01.9546307Z             {
2026-06-22T01:08:01.9546458Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.9546563Z               "line": 217
2026-06-22T01:08:01.9546661Z             },
2026-06-22T01:08:01.9546761Z             {
2026-06-22T01:08:01.9546900Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.9547009Z               "line": 233
2026-06-22T01:08:01.9547352Z             },
2026-06-22T01:08:01.9547506Z             {
2026-06-22T01:08:01.9547653Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.9547763Z               "line": 41
2026-06-22T01:08:01.9547868Z             },
2026-06-22T01:08:01.9547972Z             {
2026-06-22T01:08:01.9548121Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.9548229Z               "line": 222
2026-06-22T01:08:01.9548335Z             },
2026-06-22T01:08:01.9548436Z             {
2026-06-22T01:08:01.9548582Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T01:08:01.9548688Z               "line": 173
2026-06-22T01:08:01.9548878Z             },
2026-06-22T01:08:01.9549049Z             {
2026-06-22T01:08:01.9549190Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.9549304Z               "line": 354
2026-06-22T01:08:01.9549409Z             },
2026-06-22T01:08:01.9549515Z             {
2026-06-22T01:08:01.9549642Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.9549753Z               "line": 419
2026-06-22T01:08:01.9549857Z             },
2026-06-22T01:08:01.9549966Z             {
2026-06-22T01:08:01.9550110Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9550209Z               "line": 333
2026-06-22T01:08:01.9550429Z             },
2026-06-22T01:08:01.9550529Z             {
2026-06-22T01:08:01.9550669Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9550772Z               "line": 6320
2026-06-22T01:08:01.9550873Z             },
2026-06-22T01:08:01.9550979Z             {
2026-06-22T01:08:01.9551101Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9551226Z               "line": 6470
2026-06-22T01:08:01.9551327Z             },
2026-06-22T01:08:01.9551435Z             {
2026-06-22T01:08:01.9551565Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9551675Z               "line": 6646
2026-06-22T01:08:01.9551783Z             }
2026-06-22T01:08:01.9551887Z           ]
2026-06-22T01:08:01.9551993Z         },
2026-06-22T01:08:01.9552083Z         "int": {
2026-06-22T01:08:01.9552202Z           "complete": true,
2026-06-22T01:08:01.9552322Z           "evidence": [
2026-06-22T01:08:01.9552421Z             {
2026-06-22T01:08:01.9552580Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9552694Z               "line": 713
2026-06-22T01:08:01.9552798Z             },
2026-06-22T01:08:01.9552899Z             {
2026-06-22T01:08:01.9553065Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T01:08:01.9553175Z               "line": 8
2026-06-22T01:08:01.9553285Z             },
2026-06-22T01:08:01.9553394Z             {
2026-06-22T01:08:01.9553543Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T01:08:01.9553661Z               "line": 49
2026-06-22T01:08:01.9553766Z             },
2026-06-22T01:08:01.9553868Z             {
2026-06-22T01:08:01.9554014Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9554127Z               "line": 778
2026-06-22T01:08:01.9554232Z             },
2026-06-22T01:08:01.9554330Z             {
2026-06-22T01:08:01.9554478Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9554593Z               "line": 1213
2026-06-22T01:08:01.9554702Z             },
2026-06-22T01:08:01.9554802Z             {
2026-06-22T01:08:01.9554941Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T01:08:01.9555050Z               "line": 17
2026-06-22T01:08:01.9555152Z             },
2026-06-22T01:08:01.9555256Z             {
2026-06-22T01:08:01.9555398Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T01:08:01.9555509Z               "line": 14
2026-06-22T01:08:01.9555604Z             }
2026-06-22T01:08:01.9555713Z           ]
2026-06-22T01:08:01.9555819Z         },
2026-06-22T01:08:01.9555923Z         "unit": {
2026-06-22T01:08:01.9556042Z           "complete": true,
2026-06-22T01:08:01.9556153Z           "evidence": [
2026-06-22T01:08:01.9556256Z             {
2026-06-22T01:08:01.9556406Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9556519Z               "line": 246
2026-06-22T01:08:01.9556629Z             },
2026-06-22T01:08:01.9556730Z             {
2026-06-22T01:08:01.9556891Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9557004Z               "line": 279
2026-06-22T01:08:01.9557118Z             },
2026-06-22T01:08:01.9557222Z             {
2026-06-22T01:08:01.9557369Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9557489Z               "line": 319
2026-06-22T01:08:01.9557704Z             },
2026-06-22T01:08:01.9557813Z             {
2026-06-22T01:08:01.9557955Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9558071Z               "line": 599
2026-06-22T01:08:01.9558180Z             },
2026-06-22T01:08:01.9558275Z             {
2026-06-22T01:08:01.9558428Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9558542Z               "line": 672
2026-06-22T01:08:01.9558648Z             },
2026-06-22T01:08:01.9558752Z             {
2026-06-22T01:08:01.9558895Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9559200Z               "line": 816
2026-06-22T01:08:01.9559316Z             },
2026-06-22T01:08:01.9559420Z             {
2026-06-22T01:08:01.9559561Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.9559676Z               "line": 595
2026-06-22T01:08:01.9559788Z             },
2026-06-22T01:08:01.9559892Z             {
2026-06-22T01:08:01.9560047Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T01:08:01.9560159Z               "line": 399
2026-06-22T01:08:01.9560265Z             },
2026-06-22T01:08:01.9560365Z             {
2026-06-22T01:08:01.9560498Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9560614Z               "line": 8976
2026-06-22T01:08:01.9560709Z             },
2026-06-22T01:08:01.9560813Z             {
2026-06-22T01:08:01.9560938Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9561057Z               "line": 9300
2026-06-22T01:08:01.9561152Z             },
2026-06-22T01:08:01.9561253Z             {
2026-06-22T01:08:01.9561381Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9561495Z               "line": 9717
2026-06-22T01:08:01.9561601Z             }
2026-06-22T01:08:01.9561705Z           ]
2026-06-22T01:08:01.9561815Z         }
2026-06-22T01:08:01.9561916Z       }
2026-06-22T01:08:01.9562014Z     },
2026-06-22T01:08:01.9562120Z     {
2026-06-22T01:08:01.9562231Z       "id": "REQ-SHELL-2",
2026-06-22T01:08:01.9563803Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-22T01:08:01.9563921Z       "requiredStages": [
2026-06-22T01:08:01.9564026Z         "impl",
2026-06-22T01:08:01.9564142Z         "unit",
2026-06-22T01:08:01.9564245Z         "int"
2026-06-22T01:08:01.9564346Z       ],
2026-06-22T01:08:01.9564452Z       "stages": {
2026-06-22T01:08:01.9564555Z         "doc": {
2026-06-22T01:08:01.9564673Z           "complete": false,
2026-06-22T01:08:01.9564788Z           "evidence": []
2026-06-22T01:08:01.9564910Z         },
2026-06-22T01:08:01.9565014Z         "impl": {
2026-06-22T01:08:01.9565139Z           "complete": true,
2026-06-22T01:08:01.9565243Z           "evidence": [
2026-06-22T01:08:01.9565348Z             {
2026-06-22T01:08:01.9565506Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.9565624Z               "line": 217
2026-06-22T01:08:01.9565731Z             },
2026-06-22T01:08:01.9565835Z             {
2026-06-22T01:08:01.9565983Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9566097Z               "line": 403
2026-06-22T01:08:01.9566206Z             },
2026-06-22T01:08:01.9566302Z             {
2026-06-22T01:08:01.9566459Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T01:08:01.9566578Z               "line": 250
2026-06-22T01:08:01.9566666Z             },
2026-06-22T01:08:01.9566769Z             {
2026-06-22T01:08:01.9566917Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.9567266Z               "line": 403
2026-06-22T01:08:01.9567371Z             },
2026-06-22T01:08:01.9567469Z             {
2026-06-22T01:08:01.9567617Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9567725Z               "line": 30
2026-06-22T01:08:01.9567829Z             },
2026-06-22T01:08:01.9567929Z             {
2026-06-22T01:08:01.9568068Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9568191Z               "line": 409
2026-06-22T01:08:01.9568292Z             },
2026-06-22T01:08:01.9568402Z             {
2026-06-22T01:08:01.9568544Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9568749Z               "line": 445
2026-06-22T01:08:01.9568855Z             },
2026-06-22T01:08:01.9569031Z             {
2026-06-22T01:08:01.9569174Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9569284Z               "line": 660
2026-06-22T01:08:01.9569403Z             },
2026-06-22T01:08:01.9569508Z             {
2026-06-22T01:08:01.9569651Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.9569756Z               "line": 348
2026-06-22T01:08:01.9569862Z             },
2026-06-22T01:08:01.9569956Z             {
2026-06-22T01:08:01.9570102Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9570207Z               "line": 115
2026-06-22T01:08:01.9570306Z             },
2026-06-22T01:08:01.9570414Z             {
2026-06-22T01:08:01.9570559Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9570682Z               "line": 120
2026-06-22T01:08:01.9570777Z             },
2026-06-22T01:08:01.9570883Z             {
2026-06-22T01:08:01.9571029Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9571136Z               "line": 374
2026-06-22T01:08:01.9571236Z             },
2026-06-22T01:08:01.9571344Z             {
2026-06-22T01:08:01.9571484Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9571592Z               "line": 500
2026-06-22T01:08:01.9571692Z             },
2026-06-22T01:08:01.9571799Z             {
2026-06-22T01:08:01.9571932Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9572046Z               "line": 24
2026-06-22T01:08:01.9572147Z             },
2026-06-22T01:08:01.9572241Z             {
2026-06-22T01:08:01.9572385Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9572495Z               "line": 76
2026-06-22T01:08:01.9572599Z             },
2026-06-22T01:08:01.9572700Z             {
2026-06-22T01:08:01.9572842Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9572955Z               "line": 154
2026-06-22T01:08:01.9573060Z             },
2026-06-22T01:08:01.9573162Z             {
2026-06-22T01:08:01.9573318Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9573433Z               "line": 177
2026-06-22T01:08:01.9573538Z             },
2026-06-22T01:08:01.9573646Z             {
2026-06-22T01:08:01.9573790Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9573899Z               "line": 273
2026-06-22T01:08:01.9574000Z             },
2026-06-22T01:08:01.9574105Z             {
2026-06-22T01:08:01.9574257Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9574368Z               "line": 456
2026-06-22T01:08:01.9574471Z             },
2026-06-22T01:08:01.9574567Z             {
2026-06-22T01:08:01.9574711Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9574839Z               "line": 538
2026-06-22T01:08:01.9574939Z             },
2026-06-22T01:08:01.9575050Z             {
2026-06-22T01:08:01.9575196Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T01:08:01.9575319Z               "line": 27
2026-06-22T01:08:01.9575427Z             },
2026-06-22T01:08:01.9575522Z             {
2026-06-22T01:08:01.9575666Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T01:08:01.9575879Z               "line": 48
2026-06-22T01:08:01.9575990Z             },
2026-06-22T01:08:01.9576085Z             {
2026-06-22T01:08:01.9576233Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9576342Z               "line": 517
2026-06-22T01:08:01.9576442Z             },
2026-06-22T01:08:01.9576548Z             {
2026-06-22T01:08:01.9576681Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9576790Z               "line": 1921
2026-06-22T01:08:01.9576901Z             },
2026-06-22T01:08:01.9577010Z             {
2026-06-22T01:08:01.9577148Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9577357Z               "line": 6334
2026-06-22T01:08:01.9577468Z             },
2026-06-22T01:08:01.9577569Z             {
2026-06-22T01:08:01.9577701Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9577807Z               "line": 6395
2026-06-22T01:08:01.9577917Z             },
2026-06-22T01:08:01.9578015Z             {
2026-06-22T01:08:01.9578134Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9578248Z               "line": 6423
2026-06-22T01:08:01.9578351Z             },
2026-06-22T01:08:01.9578461Z             {
2026-06-22T01:08:01.9578590Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9578699Z               "line": 6477
2026-06-22T01:08:01.9578809Z             },
2026-06-22T01:08:01.9578909Z             {
2026-06-22T01:08:01.9579114Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9579229Z               "line": 6732
2026-06-22T01:08:01.9579338Z             },
2026-06-22T01:08:01.9579463Z             {
2026-06-22T01:08:01.9579596Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9579705Z               "line": 6792
2026-06-22T01:08:01.9579807Z             },
2026-06-22T01:08:01.9579910Z             {
2026-06-22T01:08:01.9580049Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9580149Z               "line": 298
2026-06-22T01:08:01.9580258Z             },
2026-06-22T01:08:01.9580359Z             {
2026-06-22T01:08:01.9580502Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9580606Z               "line": 339
2026-06-22T01:08:01.9580715Z             }
2026-06-22T01:08:01.9580819Z           ]
2026-06-22T01:08:01.9580928Z         },
2026-06-22T01:08:01.9581027Z         "int": {
2026-06-22T01:08:01.9581143Z           "complete": true,
2026-06-22T01:08:01.9581252Z           "evidence": [
2026-06-22T01:08:01.9581356Z             {
2026-06-22T01:08:01.9581515Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9581628Z               "line": 706
2026-06-22T01:08:01.9581729Z             },
2026-06-22T01:08:01.9581829Z             {
2026-06-22T01:08:01.9581981Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9582101Z               "line": 778
2026-06-22T01:08:01.9582205Z             },
2026-06-22T01:08:01.9582310Z             {
2026-06-22T01:08:01.9582458Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9582577Z               "line": 1213
2026-06-22T01:08:01.9582688Z             },
2026-06-22T01:08:01.9582782Z             {
2026-06-22T01:08:01.9582945Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T01:08:01.9583055Z               "line": 18
2026-06-22T01:08:01.9583169Z             }
2026-06-22T01:08:01.9583270Z           ]
2026-06-22T01:08:01.9583379Z         },
2026-06-22T01:08:01.9583501Z         "unit": {
2026-06-22T01:08:01.9583616Z           "complete": true,
2026-06-22T01:08:01.9583731Z           "evidence": [
2026-06-22T01:08:01.9583834Z             {
2026-06-22T01:08:01.9583984Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9584093Z               "line": 744
2026-06-22T01:08:01.9584202Z             },
2026-06-22T01:08:01.9584313Z             {
2026-06-22T01:08:01.9584459Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T01:08:01.9584684Z               "line": 796
2026-06-22T01:08:01.9599586Z             },
2026-06-22T01:08:01.9599691Z             {
2026-06-22T01:08:01.9599843Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9599964Z               "line": 705
2026-06-22T01:08:01.9600069Z             },
2026-06-22T01:08:01.9600182Z             {
2026-06-22T01:08:01.9600326Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9600439Z               "line": 754
2026-06-22T01:08:01.9600544Z             },
2026-06-22T01:08:01.9600645Z             {
2026-06-22T01:08:01.9600797Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9601021Z               "line": 778
2026-06-22T01:08:01.9601121Z             },
2026-06-22T01:08:01.9601227Z             {
2026-06-22T01:08:01.9601373Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9601479Z               "line": 603
2026-06-22T01:08:01.9601581Z             },
2026-06-22T01:08:01.9601698Z             {
2026-06-22T01:08:01.9601874Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9602005Z               "line": 624
2026-06-22T01:08:01.9602128Z             },
2026-06-22T01:08:01.9602244Z             {
2026-06-22T01:08:01.9602419Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9602554Z               "line": 660
2026-06-22T01:08:01.9602672Z             },
2026-06-22T01:08:01.9602801Z             {
2026-06-22T01:08:01.9602968Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9603112Z               "line": 714
2026-06-22T01:08:01.9603226Z             },
2026-06-22T01:08:01.9603354Z             {
2026-06-22T01:08:01.9603536Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9603659Z               "line": 732
2026-06-22T01:08:01.9603785Z             },
2026-06-22T01:08:01.9603893Z             {
2026-06-22T01:08:01.9604070Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9604207Z               "line": 766
2026-06-22T01:08:01.9604332Z             },
2026-06-22T01:08:01.9604453Z             {
2026-06-22T01:08:01.9604626Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T01:08:01.9604760Z               "line": 841
2026-06-22T01:08:01.9604875Z             },
2026-06-22T01:08:01.9604998Z             {
2026-06-22T01:08:01.9605175Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T01:08:01.9605307Z               "line": 85
2026-06-22T01:08:01.9605438Z             },
2026-06-22T01:08:01.9605547Z             {
2026-06-22T01:08:01.9605695Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9605838Z               "line": 8044
2026-06-22T01:08:01.9605961Z             },
2026-06-22T01:08:01.9606081Z             {
2026-06-22T01:08:01.9606247Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9606387Z               "line": 9054
2026-06-22T01:08:01.9606509Z             },
2026-06-22T01:08:01.9606639Z             {
2026-06-22T01:08:01.9606791Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9606928Z               "line": 9124
2026-06-22T01:08:01.9607047Z             },
2026-06-22T01:08:01.9607174Z             {
2026-06-22T01:08:01.9607331Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9607456Z               "line": 9162
2026-06-22T01:08:01.9607584Z             }
2026-06-22T01:08:01.9607704Z           ]
2026-06-22T01:08:01.9607827Z         }
2026-06-22T01:08:01.9607938Z       }
2026-06-22T01:08:01.9608071Z     },
2026-06-22T01:08:01.9608194Z     {
2026-06-22T01:08:01.9608328Z       "id": "REQ-SHELL-3",
2026-06-22T01:08:01.9610770Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-22T01:08:01.9611061Z       "requiredStages": [
2026-06-22T01:08:01.9611182Z         "impl",
2026-06-22T01:08:01.9611310Z         "unit",
2026-06-22T01:08:01.9611429Z         "int"
2026-06-22T01:08:01.9611553Z       ],
2026-06-22T01:08:01.9611681Z       "stages": {
2026-06-22T01:08:01.9611811Z         "doc": {
2026-06-22T01:08:01.9611958Z           "complete": false,
2026-06-22T01:08:01.9612225Z           "evidence": []
2026-06-22T01:08:01.9612324Z         },
2026-06-22T01:08:01.9612429Z         "impl": {
2026-06-22T01:08:01.9612561Z           "complete": true,
2026-06-22T01:08:01.9612669Z           "evidence": [
2026-06-22T01:08:01.9612775Z             {
2026-06-22T01:08:01.9612927Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.9613056Z               "line": 229
2026-06-22T01:08:01.9613166Z             },
2026-06-22T01:08:01.9613265Z             {
2026-06-22T01:08:01.9613424Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9613529Z               "line": 36
2026-06-22T01:08:01.9613633Z             },
2026-06-22T01:08:01.9613734Z             {
2026-06-22T01:08:01.9613885Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9613996Z               "line": 137
2026-06-22T01:08:01.9614096Z             },
2026-06-22T01:08:01.9614200Z             {
2026-06-22T01:08:01.9614349Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9614467Z               "line": 153
2026-06-22T01:08:01.9614577Z             },
2026-06-22T01:08:01.9614679Z             {
2026-06-22T01:08:01.9614825Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9614931Z               "line": 165
2026-06-22T01:08:01.9615041Z             },
2026-06-22T01:08:01.9615139Z             {
2026-06-22T01:08:01.9615286Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9615402Z               "line": 242
2026-06-22T01:08:01.9615506Z             },
2026-06-22T01:08:01.9615611Z             {
2026-06-22T01:08:01.9615754Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9615858Z               "line": 267
2026-06-22T01:08:01.9615965Z             },
2026-06-22T01:08:01.9616069Z             {
2026-06-22T01:08:01.9616222Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9616331Z               "line": 293
2026-06-22T01:08:01.9616440Z             },
2026-06-22T01:08:01.9616536Z             {
2026-06-22T01:08:01.9616688Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:08:01.9616798Z               "line": 51
2026-06-22T01:08:01.9616904Z             },
2026-06-22T01:08:01.9617008Z             {
2026-06-22T01:08:01.9617146Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9617262Z               "line": 333
2026-06-22T01:08:01.9617365Z             },
2026-06-22T01:08:01.9617474Z             {
2026-06-22T01:08:01.9617621Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9617730Z               "line": 373
2026-06-22T01:08:01.9617839Z             },
2026-06-22T01:08:01.9617945Z             {
2026-06-22T01:08:01.9618086Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9618197Z               "line": 602
2026-06-22T01:08:01.9618302Z             },
2026-06-22T01:08:01.9618411Z             {
2026-06-22T01:08:01.9618565Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9618688Z               "line": 132
2026-06-22T01:08:01.9618788Z             },
2026-06-22T01:08:01.9618898Z             {
2026-06-22T01:08:01.9619137Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9619255Z               "line": 448
2026-06-22T01:08:01.9619457Z             },
2026-06-22T01:08:01.9619560Z             {
2026-06-22T01:08:01.9619708Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T01:08:01.9619823Z               "line": 74
2026-06-22T01:08:01.9619932Z             },
2026-06-22T01:08:01.9620028Z             {
2026-06-22T01:08:01.9620181Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9620289Z               "line": 605
2026-06-22T01:08:01.9620394Z             },
2026-06-22T01:08:01.9620493Z             {
2026-06-22T01:08:01.9620644Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9620855Z               "line": 396
2026-06-22T01:08:01.9620949Z             },
2026-06-22T01:08:01.9621055Z             {
2026-06-22T01:08:01.9621193Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9621306Z               "line": 6518
2026-06-22T01:08:01.9621413Z             }
2026-06-22T01:08:01.9621518Z           ]
2026-06-22T01:08:01.9621631Z         },
2026-06-22T01:08:01.9621727Z         "int": {
2026-06-22T01:08:01.9621841Z           "complete": true,
2026-06-22T01:08:01.9621965Z           "evidence": [
2026-06-22T01:08:01.9622066Z             {
2026-06-22T01:08:01.9622213Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9622324Z               "line": 1262
2026-06-22T01:08:01.9622433Z             },
2026-06-22T01:08:01.9622538Z             {
2026-06-22T01:08:01.9622681Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-22T01:08:01.9622790Z               "line": 17
2026-06-22T01:08:01.9622889Z             }
2026-06-22T01:08:01.9622998Z           ]
2026-06-22T01:08:01.9623102Z         },
2026-06-22T01:08:01.9623211Z         "unit": {
2026-06-22T01:08:01.9623330Z           "complete": true,
2026-06-22T01:08:01.9623441Z           "evidence": [
2026-06-22T01:08:01.9623549Z             {
2026-06-22T01:08:01.9623689Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9623802Z               "line": 311
2026-06-22T01:08:01.9623907Z             },
2026-06-22T01:08:01.9623998Z             {
2026-06-22T01:08:01.9624145Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9624247Z               "line": 325
2026-06-22T01:08:01.9624356Z             },
2026-06-22T01:08:01.9624455Z             {
2026-06-22T01:08:01.9624604Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9624708Z               "line": 343
2026-06-22T01:08:01.9624808Z             },
2026-06-22T01:08:01.9624909Z             {
2026-06-22T01:08:01.9625051Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9625171Z               "line": 364
2026-06-22T01:08:01.9625272Z             },
2026-06-22T01:08:01.9625380Z             {
2026-06-22T01:08:01.9625530Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T01:08:01.9625643Z               "line": 376
2026-06-22T01:08:01.9625747Z             },
2026-06-22T01:08:01.9625852Z             {
2026-06-22T01:08:01.9626004Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9626113Z               "line": 897
2026-06-22T01:08:01.9626220Z             },
2026-06-22T01:08:01.9626324Z             {
2026-06-22T01:08:01.9626472Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9626591Z               "line": 957
2026-06-22T01:08:01.9626695Z             },
2026-06-22T01:08:01.9626806Z             {
2026-06-22T01:08:01.9626953Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T01:08:01.9627072Z               "line": 338
2026-06-22T01:08:01.9627174Z             },
2026-06-22T01:08:01.9627282Z             {
2026-06-22T01:08:01.9627416Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.9627531Z               "line": 769
2026-06-22T01:08:01.9627635Z             },
2026-06-22T01:08:01.9627740Z             {
2026-06-22T01:08:01.9627883Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9628058Z               "line": 8836
2026-06-22T01:08:01.9628167Z             }
2026-06-22T01:08:01.9628271Z           ]
2026-06-22T01:08:01.9628375Z         }
2026-06-22T01:08:01.9628476Z       }
2026-06-22T01:08:01.9628580Z     },
2026-06-22T01:08:01.9628685Z     {
2026-06-22T01:08:01.9628796Z       "id": "REQ-SHELL-4",
2026-06-22T01:08:01.9630718Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-22T01:08:01.9630958Z       "requiredStages": [
2026-06-22T01:08:01.9631067Z         "doc",
2026-06-22T01:08:01.9631176Z         "impl",
2026-06-22T01:08:01.9631281Z         "unit",
2026-06-22T01:08:01.9631382Z         "int"
2026-06-22T01:08:01.9631486Z       ],
2026-06-22T01:08:01.9631590Z       "stages": {
2026-06-22T01:08:01.9631696Z         "doc": {
2026-06-22T01:08:01.9631800Z           "complete": true,
2026-06-22T01:08:01.9631905Z           "evidence": [
2026-06-22T01:08:01.9636012Z             {
2026-06-22T01:08:01.9636147Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9636269Z               "line": 281
2026-06-22T01:08:01.9636388Z             },
2026-06-22T01:08:01.9636498Z             {
2026-06-22T01:08:01.9636794Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T01:08:01.9636912Z               "line": 88
2026-06-22T01:08:01.9637017Z             }
2026-06-22T01:08:01.9637118Z           ]
2026-06-22T01:08:01.9637218Z         },
2026-06-22T01:08:01.9637322Z         "impl": {
2026-06-22T01:08:01.9637452Z           "complete": true,
2026-06-22T01:08:01.9637552Z           "evidence": [
2026-06-22T01:08:01.9637661Z             {
2026-06-22T01:08:01.9637813Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.9637923Z               "line": 243
2026-06-22T01:08:01.9638029Z             },
2026-06-22T01:08:01.9638124Z             {
2026-06-22T01:08:01.9638272Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T01:08:01.9638373Z               "line": 61
2026-06-22T01:08:01.9638476Z             },
2026-06-22T01:08:01.9638580Z             {
2026-06-22T01:08:01.9638719Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9638831Z               "line": 218
2026-06-22T01:08:01.9638930Z             },
2026-06-22T01:08:01.9639117Z             {
2026-06-22T01:08:01.9639265Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9639375Z               "line": 245
2026-06-22T01:08:01.9639493Z             },
2026-06-22T01:08:01.9639594Z             {
2026-06-22T01:08:01.9639737Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9639846Z               "line": 616
2026-06-22T01:08:01.9639952Z             },
2026-06-22T01:08:01.9640042Z             {
2026-06-22T01:08:01.9640194Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9640300Z               "line": 1191
2026-06-22T01:08:01.9640400Z             },
2026-06-22T01:08:01.9640509Z             {
2026-06-22T01:08:01.9640639Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9640757Z               "line": 1203
2026-06-22T01:08:01.9640848Z             },
2026-06-22T01:08:01.9640958Z             {
2026-06-22T01:08:01.9641100Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9641211Z               "line": 1244
2026-06-22T01:08:01.9641320Z             },
2026-06-22T01:08:01.9641424Z             {
2026-06-22T01:08:01.9641567Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9641827Z               "line": 456
2026-06-22T01:08:01.9641927Z             },
2026-06-22T01:08:01.9642032Z             {
2026-06-22T01:08:01.9642175Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9642295Z               "line": 44
2026-06-22T01:08:01.9642394Z             },
2026-06-22T01:08:01.9642495Z             {
2026-06-22T01:08:01.9642633Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9642746Z               "line": 208
2026-06-22T01:08:01.9642848Z             },
2026-06-22T01:08:01.9642947Z             {
2026-06-22T01:08:01.9643080Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9643295Z               "line": 227
2026-06-22T01:08:01.9643400Z             },
2026-06-22T01:08:01.9643506Z             {
2026-06-22T01:08:01.9643638Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9643754Z               "line": 253
2026-06-22T01:08:01.9643863Z             },
2026-06-22T01:08:01.9644085Z             {
2026-06-22T01:08:01.9644227Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9644331Z               "line": 272
2026-06-22T01:08:01.9644437Z             },
2026-06-22T01:08:01.9644537Z             {
2026-06-22T01:08:01.9644684Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9644790Z               "line": 392
2026-06-22T01:08:01.9644894Z             },
2026-06-22T01:08:01.9644999Z             {
2026-06-22T01:08:01.9645138Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9645247Z               "line": 421
2026-06-22T01:08:01.9645352Z             },
2026-06-22T01:08:01.9645462Z             {
2026-06-22T01:08:01.9645599Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9645715Z               "line": 439
2026-06-22T01:08:01.9645814Z             },
2026-06-22T01:08:01.9645919Z             {
2026-06-22T01:08:01.9646068Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9646176Z               "line": 458
2026-06-22T01:08:01.9646282Z             },
2026-06-22T01:08:01.9646383Z             {
2026-06-22T01:08:01.9646520Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9646621Z               "line": 486
2026-06-22T01:08:01.9646721Z             },
2026-06-22T01:08:01.9646829Z             {
2026-06-22T01:08:01.9646972Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9647078Z               "line": 624
2026-06-22T01:08:01.9647345Z             },
2026-06-22T01:08:01.9647454Z             {
2026-06-22T01:08:01.9647607Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9647711Z               "line": 829
2026-06-22T01:08:01.9647820Z             },
2026-06-22T01:08:01.9647926Z             {
2026-06-22T01:08:01.9648073Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9648183Z               "line": 435
2026-06-22T01:08:01.9648294Z             },
2026-06-22T01:08:01.9648402Z             {
2026-06-22T01:08:01.9648531Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9648642Z               "line": 6574
2026-06-22T01:08:01.9648740Z             }
2026-06-22T01:08:01.9648855Z           ]
2026-06-22T01:08:01.9649022Z         },
2026-06-22T01:08:01.9649131Z         "int": {
2026-06-22T01:08:01.9649245Z           "complete": true,
2026-06-22T01:08:01.9649353Z           "evidence": [
2026-06-22T01:08:01.9649457Z             {
2026-06-22T01:08:01.9649597Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-22T01:08:01.9649705Z               "line": 18
2026-06-22T01:08:01.9649810Z             }
2026-06-22T01:08:01.9649912Z           ]
2026-06-22T01:08:01.9650011Z         },
2026-06-22T01:08:01.9650111Z         "unit": {
2026-06-22T01:08:01.9650231Z           "complete": true,
2026-06-22T01:08:01.9650335Z           "evidence": [
2026-06-22T01:08:01.9650435Z             {
2026-06-22T01:08:01.9650687Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9650793Z               "line": 1479
2026-06-22T01:08:01.9650893Z             },
2026-06-22T01:08:01.9650993Z             {
2026-06-22T01:08:01.9651132Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9651241Z               "line": 1508
2026-06-22T01:08:01.9651350Z             },
2026-06-22T01:08:01.9651452Z             {
2026-06-22T01:08:01.9651603Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9651713Z               "line": 504
2026-06-22T01:08:01.9651810Z             },
2026-06-22T01:08:01.9651912Z             {
2026-06-22T01:08:01.9652179Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9652296Z               "line": 514
2026-06-22T01:08:01.9652397Z             },
2026-06-22T01:08:01.9652502Z             {
2026-06-22T01:08:01.9652649Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9652755Z               "line": 531
2026-06-22T01:08:01.9652860Z             },
2026-06-22T01:08:01.9652959Z             {
2026-06-22T01:08:01.9653103Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9653207Z               "line": 543
2026-06-22T01:08:01.9653316Z             },
2026-06-22T01:08:01.9653422Z             {
2026-06-22T01:08:01.9653559Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T01:08:01.9653665Z               "line": 555
2026-06-22T01:08:01.9653756Z             },
2026-06-22T01:08:01.9653855Z             {
2026-06-22T01:08:01.9653999Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9654118Z               "line": 1145
2026-06-22T01:08:01.9654218Z             },
2026-06-22T01:08:01.9654314Z             {
2026-06-22T01:08:01.9654447Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.9654555Z               "line": 776
2026-06-22T01:08:01.9654660Z             }
2026-06-22T01:08:01.9654759Z           ]
2026-06-22T01:08:01.9654858Z         }
2026-06-22T01:08:01.9654963Z       }
2026-06-22T01:08:01.9655064Z     },
2026-06-22T01:08:01.9655159Z     {
2026-06-22T01:08:01.9655264Z       "id": "REQ-SHELL-5",
2026-06-22T01:08:01.9656551Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-22T01:08:01.9656689Z       "requiredStages": [
2026-06-22T01:08:01.9656784Z         "doc",
2026-06-22T01:08:01.9656895Z         "impl",
2026-06-22T01:08:01.9657004Z         "unit",
2026-06-22T01:08:01.9657109Z         "int"
2026-06-22T01:08:01.9657210Z       ],
2026-06-22T01:08:01.9657323Z       "stages": {
2026-06-22T01:08:01.9657427Z         "doc": {
2026-06-22T01:08:01.9657542Z           "complete": true,
2026-06-22T01:08:01.9657648Z           "evidence": [
2026-06-22T01:08:01.9657746Z             {
2026-06-22T01:08:01.9657866Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9657976Z               "line": 284
2026-06-22T01:08:01.9658084Z             }
2026-06-22T01:08:01.9658186Z           ]
2026-06-22T01:08:01.9658291Z         },
2026-06-22T01:08:01.9658399Z         "impl": {
2026-06-22T01:08:01.9658511Z           "complete": true,
2026-06-22T01:08:01.9658619Z           "evidence": [
2026-06-22T01:08:01.9658724Z             {
2026-06-22T01:08:01.9658873Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T01:08:01.9659062Z               "line": 260
2026-06-22T01:08:01.9659164Z             }
2026-06-22T01:08:01.9659268Z           ]
2026-06-22T01:08:01.9659363Z         },
2026-06-22T01:08:01.9659460Z         "int": {
2026-06-22T01:08:01.9659573Z           "complete": true,
2026-06-22T01:08:01.9659682Z           "evidence": [
2026-06-22T01:08:01.9659890Z             {
2026-06-22T01:08:01.9660037Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9660142Z               "line": 827
2026-06-22T01:08:01.9660237Z             },
2026-06-22T01:08:01.9660346Z             {
2026-06-22T01:08:01.9660491Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9660595Z               "line": 1290
2026-06-22T01:08:01.9660699Z             },
2026-06-22T01:08:01.9660801Z             {
2026-06-22T01:08:01.9660971Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-22T01:08:01.9661072Z               "line": 23
2026-06-22T01:08:01.9661176Z             }
2026-06-22T01:08:01.9661368Z           ]
2026-06-22T01:08:01.9661468Z         },
2026-06-22T01:08:01.9661577Z         "unit": {
2026-06-22T01:08:01.9661693Z           "complete": true,
2026-06-22T01:08:01.9661801Z           "evidence": [
2026-06-22T01:08:01.9661901Z             {
2026-06-22T01:08:01.9662050Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T01:08:01.9662153Z               "line": 803
2026-06-22T01:08:01.9662254Z             }
2026-06-22T01:08:01.9662360Z           ]
2026-06-22T01:08:01.9662468Z         }
2026-06-22T01:08:01.9662568Z       }
2026-06-22T01:08:01.9662668Z     },
2026-06-22T01:08:01.9662762Z     {
2026-06-22T01:08:01.9662870Z       "id": "REQ-START-1",
2026-06-22T01:08:01.9663096Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-22T01:08:01.9663214Z       "requiredStages": [
2026-06-22T01:08:01.9663310Z         "impl",
2026-06-22T01:08:01.9663410Z         "unit"
2026-06-22T01:08:01.9663509Z       ],
2026-06-22T01:08:01.9663630Z       "stages": {
2026-06-22T01:08:01.9663734Z         "doc": {
2026-06-22T01:08:01.9663848Z           "complete": false,
2026-06-22T01:08:01.9663963Z           "evidence": []
2026-06-22T01:08:01.9664062Z         },
2026-06-22T01:08:01.9664167Z         "impl": {
2026-06-22T01:08:01.9664278Z           "complete": true,
2026-06-22T01:08:01.9664382Z           "evidence": [
2026-06-22T01:08:01.9664487Z             {
2026-06-22T01:08:01.9664627Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T01:08:01.9664734Z               "line": 16
2026-06-22T01:08:01.9664831Z             }
2026-06-22T01:08:01.9664942Z           ]
2026-06-22T01:08:01.9665039Z         },
2026-06-22T01:08:01.9665148Z         "int": {
2026-06-22T01:08:01.9665259Z           "complete": false,
2026-06-22T01:08:01.9665366Z           "evidence": []
2026-06-22T01:08:01.9665475Z         },
2026-06-22T01:08:01.9665581Z         "unit": {
2026-06-22T01:08:01.9665690Z           "complete": true,
2026-06-22T01:08:01.9665799Z           "evidence": [
2026-06-22T01:08:01.9665905Z             {
2026-06-22T01:08:01.9666038Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T01:08:01.9666143Z               "line": 48
2026-06-22T01:08:01.9666239Z             },
2026-06-22T01:08:01.9666343Z             {
2026-06-22T01:08:01.9666487Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T01:08:01.9666596Z               "line": 63
2026-06-22T01:08:01.9666705Z             }
2026-06-22T01:08:01.9666801Z           ]
2026-06-22T01:08:01.9666901Z         }
2026-06-22T01:08:01.9667006Z       }
2026-06-22T01:08:01.9667107Z     },
2026-06-22T01:08:01.9667207Z     {
2026-06-22T01:08:01.9667311Z       "id": "REQ-START-2",
2026-06-22T01:08:01.9667485Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-22T01:08:01.9667592Z       "requiredStages": [
2026-06-22T01:08:01.9667698Z         "impl",
2026-06-22T01:08:01.9667804Z         "unit",
2026-06-22T01:08:01.9667902Z         "int"
2026-06-22T01:08:01.9668006Z       ],
2026-06-22T01:08:01.9668112Z       "stages": {
2026-06-22T01:08:01.9668203Z         "doc": {
2026-06-22T01:08:01.9668307Z           "complete": false,
2026-06-22T01:08:01.9668417Z           "evidence": []
2026-06-22T01:08:01.9668527Z         },
2026-06-22T01:08:01.9668617Z         "impl": {
2026-06-22T01:08:01.9668727Z           "complete": true,
2026-06-22T01:08:01.9668908Z           "evidence": [
2026-06-22T01:08:01.9669085Z             {
2026-06-22T01:08:01.9669227Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9669337Z               "line": 16
2026-06-22T01:08:01.9669442Z             },
2026-06-22T01:08:01.9669542Z             {
2026-06-22T01:08:01.9669681Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9669790Z               "line": 115
2026-06-22T01:08:01.9669885Z             },
2026-06-22T01:08:01.9669990Z             {
2026-06-22T01:08:01.9670128Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9670337Z               "line": 300
2026-06-22T01:08:01.9670441Z             }
2026-06-22T01:08:01.9670539Z           ]
2026-06-22T01:08:01.9670645Z         },
2026-06-22T01:08:01.9670750Z         "int": {
2026-06-22T01:08:01.9670864Z           "complete": true,
2026-06-22T01:08:01.9670974Z           "evidence": [
2026-06-22T01:08:01.9671079Z             {
2026-06-22T01:08:01.9671216Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.9671322Z               "line": 186
2026-06-22T01:08:01.9671422Z             }
2026-06-22T01:08:01.9671521Z           ]
2026-06-22T01:08:01.9671632Z         },
2026-06-22T01:08:01.9671741Z         "unit": {
2026-06-22T01:08:01.9671846Z           "complete": true,
2026-06-22T01:08:01.9671952Z           "evidence": [
2026-06-22T01:08:01.9672047Z             {
2026-06-22T01:08:01.9672170Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9672286Z               "line": 590
2026-06-22T01:08:01.9672385Z             },
2026-06-22T01:08:01.9672485Z             {
2026-06-22T01:08:01.9672620Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9672728Z               "line": 623
2026-06-22T01:08:01.9672834Z             }
2026-06-22T01:08:01.9672935Z           ]
2026-06-22T01:08:01.9673029Z         }
2026-06-22T01:08:01.9673128Z       }
2026-06-22T01:08:01.9673233Z     },
2026-06-22T01:08:01.9673336Z     {
2026-06-22T01:08:01.9673440Z       "id": "REQ-START-3",
2026-06-22T01:08:01.9673641Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-22T01:08:01.9673754Z       "requiredStages": [
2026-06-22T01:08:01.9673856Z         "impl",
2026-06-22T01:08:01.9673960Z         "unit",
2026-06-22T01:08:01.9674060Z         "int"
2026-06-22T01:08:01.9674156Z       ],
2026-06-22T01:08:01.9674261Z       "stages": {
2026-06-22T01:08:01.9674374Z         "doc": {
2026-06-22T01:08:01.9674480Z           "complete": false,
2026-06-22T01:08:01.9674585Z           "evidence": []
2026-06-22T01:08:01.9674676Z         },
2026-06-22T01:08:01.9674785Z         "impl": {
2026-06-22T01:08:01.9674891Z           "complete": true,
2026-06-22T01:08:01.9675000Z           "evidence": [
2026-06-22T01:08:01.9675110Z             {
2026-06-22T01:08:01.9675257Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.9675367Z               "line": 23
2026-06-22T01:08:01.9675468Z             },
2026-06-22T01:08:01.9675576Z             {
2026-06-22T01:08:01.9675727Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.9675833Z               "line": 205
2026-06-22T01:08:01.9675940Z             },
2026-06-22T01:08:01.9676040Z             {
2026-06-22T01:08:01.9676194Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.9676307Z               "line": 221
2026-06-22T01:08:01.9676412Z             },
2026-06-22T01:08:01.9676513Z             {
2026-06-22T01:08:01.9676641Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9676757Z               "line": 17
2026-06-22T01:08:01.9676866Z             },
2026-06-22T01:08:01.9676970Z             {
2026-06-22T01:08:01.9677110Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9677209Z               "line": 35
2026-06-22T01:08:01.9677318Z             },
2026-06-22T01:08:01.9677420Z             {
2026-06-22T01:08:01.9677547Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9677749Z               "line": 116
2026-06-22T01:08:01.9677852Z             }
2026-06-22T01:08:01.9677953Z           ]
2026-06-22T01:08:01.9678040Z         },
2026-06-22T01:08:01.9678152Z         "int": {
2026-06-22T01:08:01.9678258Z           "complete": true,
2026-06-22T01:08:01.9678364Z           "evidence": [
2026-06-22T01:08:01.9678467Z             {
2026-06-22T01:08:01.9678614Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T01:08:01.9678725Z               "line": 488
2026-06-22T01:08:01.9678824Z             }
2026-06-22T01:08:01.9678929Z           ]
2026-06-22T01:08:01.9679201Z         },
2026-06-22T01:08:01.9679307Z         "unit": {
2026-06-22T01:08:01.9679425Z           "complete": true,
2026-06-22T01:08:01.9679544Z           "evidence": [
2026-06-22T01:08:01.9679650Z             {
2026-06-22T01:08:01.9679792Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.9679897Z               "line": 381
2026-06-22T01:08:01.9680007Z             },
2026-06-22T01:08:01.9680097Z             {
2026-06-22T01:08:01.9680231Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.9680346Z               "line": 402
2026-06-22T01:08:01.9680455Z             },
2026-06-22T01:08:01.9680556Z             {
2026-06-22T01:08:01.9680702Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T01:08:01.9680811Z               "line": 412
2026-06-22T01:08:01.9680912Z             },
2026-06-22T01:08:01.9681015Z             {
2026-06-22T01:08:01.9681157Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9681262Z               "line": 591
2026-06-22T01:08:01.9681367Z             },
2026-06-22T01:08:01.9681481Z             {
2026-06-22T01:08:01.9681616Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9681724Z               "line": 624
2026-06-22T01:08:01.9681829Z             },
2026-06-22T01:08:01.9681926Z             {
2026-06-22T01:08:01.9682063Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9682169Z               "line": 657
2026-06-22T01:08:01.9682273Z             }
2026-06-22T01:08:01.9682368Z           ]
2026-06-22T01:08:01.9682473Z         }
2026-06-22T01:08:01.9682578Z       }
2026-06-22T01:08:01.9682683Z     },
2026-06-22T01:08:01.9682779Z     {
2026-06-22T01:08:01.9682884Z       "id": "REQ-START-4",
2026-06-22T01:08:01.9683054Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-22T01:08:01.9683170Z       "requiredStages": [
2026-06-22T01:08:01.9683279Z         "impl",
2026-06-22T01:08:01.9683369Z         "unit"
2026-06-22T01:08:01.9683467Z       ],
2026-06-22T01:08:01.9683589Z       "stages": {
2026-06-22T01:08:01.9683692Z         "doc": {
2026-06-22T01:08:01.9683812Z           "complete": false,
2026-06-22T01:08:01.9683924Z           "evidence": []
2026-06-22T01:08:01.9684029Z         },
2026-06-22T01:08:01.9684139Z         "impl": {
2026-06-22T01:08:01.9684249Z           "complete": true,
2026-06-22T01:08:01.9684372Z           "evidence": [
2026-06-22T01:08:01.9684469Z             {
2026-06-22T01:08:01.9684620Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9684726Z               "line": 585
2026-06-22T01:08:01.9684826Z             }
2026-06-22T01:08:01.9684925Z           ]
2026-06-22T01:08:01.9685030Z         },
2026-06-22T01:08:01.9685141Z         "int": {
2026-06-22T01:08:01.9685245Z           "complete": false,
2026-06-22T01:08:01.9685355Z           "evidence": []
2026-06-22T01:08:01.9685460Z         },
2026-06-22T01:08:01.9685565Z         "unit": {
2026-06-22T01:08:01.9685675Z           "complete": true,
2026-06-22T01:08:01.9685794Z           "evidence": [
2026-06-22T01:08:01.9685903Z             {
2026-06-22T01:08:01.9686033Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9686146Z               "line": 1026
2026-06-22T01:08:01.9686241Z             }
2026-06-22T01:08:01.9686345Z           ]
2026-06-22T01:08:01.9686445Z         }
2026-06-22T01:08:01.9686677Z       }
2026-06-22T01:08:01.9686783Z     },
2026-06-22T01:08:01.9686881Z     {
2026-06-22T01:08:01.9686997Z       "id": "REQ-START-5",
2026-06-22T01:08:01.9689872Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-22T01:08:01.9690118Z       "requiredStages": [
2026-06-22T01:08:01.9690225Z         "doc",
2026-06-22T01:08:01.9690329Z         "impl",
2026-06-22T01:08:01.9690433Z         "unit",
2026-06-22T01:08:01.9690540Z         "int"
2026-06-22T01:08:01.9690633Z       ],
2026-06-22T01:08:01.9690743Z       "stages": {
2026-06-22T01:08:01.9690840Z         "doc": {
2026-06-22T01:08:01.9690952Z           "complete": true,
2026-06-22T01:08:01.9691063Z           "evidence": [
2026-06-22T01:08:01.9691174Z             {
2026-06-22T01:08:01.9691315Z               "path": "CONTEXT.md",
2026-06-22T01:08:01.9691429Z               "line": 176
2026-06-22T01:08:01.9691533Z             },
2026-06-22T01:08:01.9691636Z             {
2026-06-22T01:08:01.9691789Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-22T01:08:01.9691899Z               "line": 28
2026-06-22T01:08:01.9692012Z             }
2026-06-22T01:08:01.9692113Z           ]
2026-06-22T01:08:01.9692214Z         },
2026-06-22T01:08:01.9692323Z         "impl": {
2026-06-22T01:08:01.9692434Z           "complete": true,
2026-06-22T01:08:01.9692543Z           "evidence": [
2026-06-22T01:08:01.9692647Z             {
2026-06-22T01:08:01.9692795Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.9692900Z               "line": 26
2026-06-22T01:08:01.9693005Z             },
2026-06-22T01:08:01.9693110Z             {
2026-06-22T01:08:01.9693257Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.9693368Z               "line": 212
2026-06-22T01:08:01.9693467Z             },
2026-06-22T01:08:01.9693577Z             {
2026-06-22T01:08:01.9693722Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.9693829Z               "line": 221
2026-06-22T01:08:01.9693944Z             },
2026-06-22T01:08:01.9694041Z             {
2026-06-22T01:08:01.9694173Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.9694286Z               "line": 485
2026-06-22T01:08:01.9694391Z             },
2026-06-22T01:08:01.9694504Z             {
2026-06-22T01:08:01.9694637Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9694748Z               "line": 36
2026-06-22T01:08:01.9694851Z             },
2026-06-22T01:08:01.9694947Z             {
2026-06-22T01:08:01.9695076Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9695190Z               "line": 118
2026-06-22T01:08:01.9695301Z             },
2026-06-22T01:08:01.9695400Z             {
2026-06-22T01:08:01.9695533Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T01:08:01.9695644Z               "line": 329
2026-06-22T01:08:01.9695753Z             }
2026-06-22T01:08:01.9695852Z           ]
2026-06-22T01:08:01.9695959Z         },
2026-06-22T01:08:01.9696063Z         "int": {
2026-06-22T01:08:01.9696167Z           "complete": true,
2026-06-22T01:08:01.9696373Z           "evidence": [
2026-06-22T01:08:01.9696487Z             {
2026-06-22T01:08:01.9696650Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T01:08:01.9696758Z               "line": 17
2026-06-22T01:08:01.9696867Z             }
2026-06-22T01:08:01.9696977Z           ]
2026-06-22T01:08:01.9697080Z         },
2026-06-22T01:08:01.9697189Z         "unit": {
2026-06-22T01:08:01.9697304Z           "complete": true,
2026-06-22T01:08:01.9697413Z           "evidence": [
2026-06-22T01:08:01.9697508Z             {
2026-06-22T01:08:01.9697647Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.9697761Z               "line": 358
2026-06-22T01:08:01.9697957Z             },
2026-06-22T01:08:01.9698066Z             {
2026-06-22T01:08:01.9698201Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T01:08:01.9698309Z               "line": 371
2026-06-22T01:08:01.9698419Z             },
2026-06-22T01:08:01.9698521Z             {
2026-06-22T01:08:01.9698663Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T01:08:01.9698773Z               "line": 597
2026-06-22T01:08:01.9698874Z             }
2026-06-22T01:08:01.9699039Z           ]
2026-06-22T01:08:01.9699141Z         }
2026-06-22T01:08:01.9699245Z       }
2026-06-22T01:08:01.9699345Z     },
2026-06-22T01:08:01.9699446Z     {
2026-06-22T01:08:01.9699555Z       "id": "REQ-STORE-1",
2026-06-22T01:08:01.9700456Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-22T01:08:01.9700584Z       "requiredStages": [
2026-06-22T01:08:01.9700688Z         "impl",
2026-06-22T01:08:01.9700794Z         "unit"
2026-06-22T01:08:01.9700894Z       ],
2026-06-22T01:08:01.9701007Z       "stages": {
2026-06-22T01:08:01.9701104Z         "doc": {
2026-06-22T01:08:01.9701227Z           "complete": false,
2026-06-22T01:08:01.9701337Z           "evidence": []
2026-06-22T01:08:01.9701443Z         },
2026-06-22T01:08:01.9701546Z         "impl": {
2026-06-22T01:08:01.9701651Z           "complete": true,
2026-06-22T01:08:01.9701758Z           "evidence": [
2026-06-22T01:08:01.9701861Z             {
2026-06-22T01:08:01.9702022Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9702126Z               "line": 23
2026-06-22T01:08:01.9702225Z             },
2026-06-22T01:08:01.9702330Z             {
2026-06-22T01:08:01.9702483Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9702601Z               "line": 46
2026-06-22T01:08:01.9702703Z             },
2026-06-22T01:08:01.9702802Z             {
2026-06-22T01:08:01.9702955Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9703060Z               "line": 97
2026-06-22T01:08:01.9703169Z             },
2026-06-22T01:08:01.9703275Z             {
2026-06-22T01:08:01.9703417Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9703522Z               "line": 125
2026-06-22T01:08:01.9703628Z             },
2026-06-22T01:08:01.9703732Z             {
2026-06-22T01:08:01.9703879Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9703986Z               "line": 207
2026-06-22T01:08:01.9704089Z             },
2026-06-22T01:08:01.9704185Z             {
2026-06-22T01:08:01.9704333Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9704447Z               "line": 231
2026-06-22T01:08:01.9704544Z             },
2026-06-22T01:08:01.9704648Z             {
2026-06-22T01:08:01.9704794Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9704899Z               "line": 467
2026-06-22T01:08:01.9705002Z             },
2026-06-22T01:08:01.9705106Z             {
2026-06-22T01:08:01.9705274Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9705492Z               "line": 25
2026-06-22T01:08:01.9705593Z             },
2026-06-22T01:08:01.9705702Z             {
2026-06-22T01:08:01.9705856Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9705970Z               "line": 120
2026-06-22T01:08:01.9706079Z             },
2026-06-22T01:08:01.9706185Z             {
2026-06-22T01:08:01.9706337Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9706446Z               "line": 148
2026-06-22T01:08:01.9706556Z             },
2026-06-22T01:08:01.9706661Z             {
2026-06-22T01:08:01.9706810Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9707019Z               "line": 165
2026-06-22T01:08:01.9707115Z             },
2026-06-22T01:08:01.9707220Z             {
2026-06-22T01:08:01.9707365Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9707476Z               "line": 180
2026-06-22T01:08:01.9707583Z             },
2026-06-22T01:08:01.9707692Z             {
2026-06-22T01:08:01.9707846Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9707960Z               "line": 198
2026-06-22T01:08:01.9708059Z             },
2026-06-22T01:08:01.9708160Z             {
2026-06-22T01:08:01.9708312Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9708418Z               "line": 207
2026-06-22T01:08:01.9708523Z             },
2026-06-22T01:08:01.9708627Z             {
2026-06-22T01:08:01.9708766Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:08:01.9708875Z               "line": 16
2026-06-22T01:08:01.9709052Z             },
2026-06-22T01:08:01.9709157Z             {
2026-06-22T01:08:01.9709299Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:08:01.9709405Z               "line": 63
2026-06-22T01:08:01.9709514Z             }
2026-06-22T01:08:01.9709614Z           ]
2026-06-22T01:08:01.9709715Z         },
2026-06-22T01:08:01.9709814Z         "int": {
2026-06-22T01:08:01.9709919Z           "complete": false,
2026-06-22T01:08:01.9710030Z           "evidence": []
2026-06-22T01:08:01.9710134Z         },
2026-06-22T01:08:01.9710242Z         "unit": {
2026-06-22T01:08:01.9710347Z           "complete": true,
2026-06-22T01:08:01.9710458Z           "evidence": [
2026-06-22T01:08:01.9710561Z             {
2026-06-22T01:08:01.9710715Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9710820Z               "line": 584
2026-06-22T01:08:01.9710929Z             },
2026-06-22T01:08:01.9711030Z             {
2026-06-22T01:08:01.9711163Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9711277Z               "line": 594
2026-06-22T01:08:01.9711383Z             },
2026-06-22T01:08:01.9711482Z             {
2026-06-22T01:08:01.9711626Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9711735Z               "line": 616
2026-06-22T01:08:01.9711849Z             },
2026-06-22T01:08:01.9711941Z             {
2026-06-22T01:08:01.9712082Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9712193Z               "line": 632
2026-06-22T01:08:01.9712299Z             },
2026-06-22T01:08:01.9712406Z             {
2026-06-22T01:08:01.9712539Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T01:08:01.9712649Z               "line": 690
2026-06-22T01:08:01.9712747Z             },
2026-06-22T01:08:01.9712856Z             {
2026-06-22T01:08:01.9713006Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9713109Z               "line": 472
2026-06-22T01:08:01.9713219Z             },
2026-06-22T01:08:01.9713324Z             {
2026-06-22T01:08:01.9713467Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T01:08:01.9713573Z               "line": 507
2026-06-22T01:08:01.9713682Z             },
2026-06-22T01:08:01.9713781Z             {
2026-06-22T01:08:01.9714044Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:08:01.9714159Z               "line": 120
2026-06-22T01:08:01.9714259Z             },
2026-06-22T01:08:01.9714368Z             {
2026-06-22T01:08:01.9714503Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T01:08:01.9714616Z               "line": 128
2026-06-22T01:08:01.9714721Z             }
2026-06-22T01:08:01.9714817Z           ]
2026-06-22T01:08:01.9714926Z         }
2026-06-22T01:08:01.9715031Z       }
2026-06-22T01:08:01.9715137Z     },
2026-06-22T01:08:01.9715236Z     {
2026-06-22T01:08:01.9715359Z       "id": "REQ-SUBNET-1",
2026-06-22T01:08:01.9715805Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-22T01:08:01.9715924Z       "requiredStages": [
2026-06-22T01:08:01.9716033Z         "impl",
2026-06-22T01:08:01.9716135Z         "unit"
2026-06-22T01:08:01.9716239Z       ],
2026-06-22T01:08:01.9716353Z       "stages": {
2026-06-22T01:08:01.9716473Z         "doc": {
2026-06-22T01:08:01.9720222Z           "complete": false,
2026-06-22T01:08:01.9720379Z           "evidence": []
2026-06-22T01:08:01.9720489Z         },
2026-06-22T01:08:01.9720591Z         "impl": {
2026-06-22T01:08:01.9720717Z           "complete": true,
2026-06-22T01:08:01.9720821Z           "evidence": [
2026-06-22T01:08:01.9720927Z             {
2026-06-22T01:08:01.9721098Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9721218Z               "line": 281
2026-06-22T01:08:01.9721318Z             },
2026-06-22T01:08:01.9721418Z             {
2026-06-22T01:08:01.9721585Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9721695Z               "line": 651
2026-06-22T01:08:01.9721804Z             },
2026-06-22T01:08:01.9721895Z             {
2026-06-22T01:08:01.9722033Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9722142Z               "line": 3399
2026-06-22T01:08:01.9722253Z             },
2026-06-22T01:08:01.9722357Z             {
2026-06-22T01:08:01.9722477Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9722582Z               "line": 3709
2026-06-22T01:08:01.9722686Z             },
2026-06-22T01:08:01.9722796Z             {
2026-06-22T01:08:01.9722924Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9723033Z               "line": 3728
2026-06-22T01:08:01.9723143Z             },
2026-06-22T01:08:01.9723237Z             {
2026-06-22T01:08:01.9723364Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9723469Z               "line": 3792
2026-06-22T01:08:01.9723571Z             },
2026-06-22T01:08:01.9723679Z             {
2026-06-22T01:08:01.9723808Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9723913Z               "line": 3834
2026-06-22T01:08:01.9724022Z             },
2026-06-22T01:08:01.9724123Z             {
2026-06-22T01:08:01.9724252Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9724366Z               "line": 4023
2026-06-22T01:08:01.9724476Z             },
2026-06-22T01:08:01.9724576Z             {
2026-06-22T01:08:01.9724704Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9724805Z               "line": 4093
2026-06-22T01:08:01.9724905Z             },
2026-06-22T01:08:01.9725000Z             {
2026-06-22T01:08:01.9725130Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9725239Z               "line": 4317
2026-06-22T01:08:01.9725344Z             },
2026-06-22T01:08:01.9725449Z             {
2026-06-22T01:08:01.9725563Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9725678Z               "line": 4961
2026-06-22T01:08:01.9725783Z             },
2026-06-22T01:08:01.9725881Z             {
2026-06-22T01:08:01.9726005Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9726109Z               "line": 418
2026-06-22T01:08:01.9726217Z             }
2026-06-22T01:08:01.9726308Z           ]
2026-06-22T01:08:01.9726575Z         },
2026-06-22T01:08:01.9726686Z         "int": {
2026-06-22T01:08:01.9726800Z           "complete": false,
2026-06-22T01:08:01.9726913Z           "evidence": []
2026-06-22T01:08:01.9727015Z         },
2026-06-22T01:08:01.9727124Z         "unit": {
2026-06-22T01:08:01.9727233Z           "complete": true,
2026-06-22T01:08:01.9727344Z           "evidence": [
2026-06-22T01:08:01.9727448Z             {
2026-06-22T01:08:01.9727610Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9727724Z               "line": 1584
2026-06-22T01:08:01.9727829Z             },
2026-06-22T01:08:01.9727935Z             {
2026-06-22T01:08:01.9728153Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9728264Z               "line": 9964
2026-06-22T01:08:01.9728372Z             },
2026-06-22T01:08:01.9728476Z             {
2026-06-22T01:08:01.9728605Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9728717Z               "line": 10134
2026-06-22T01:08:01.9728817Z             },
2026-06-22T01:08:01.9728908Z             {
2026-06-22T01:08:01.9729118Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9729233Z               "line": 10141
2026-06-22T01:08:01.9729323Z             },
2026-06-22T01:08:01.9729432Z             {
2026-06-22T01:08:01.9729553Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9729667Z               "line": 10194
2026-06-22T01:08:01.9729766Z             },
2026-06-22T01:08:01.9729867Z             {
2026-06-22T01:08:01.9729995Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9730104Z               "line": 10211
2026-06-22T01:08:01.9730216Z             },
2026-06-22T01:08:01.9730310Z             {
2026-06-22T01:08:01.9730438Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9730544Z               "line": 10241
2026-06-22T01:08:01.9730658Z             },
2026-06-22T01:08:01.9730758Z             {
2026-06-22T01:08:01.9730873Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9730987Z               "line": 10357
2026-06-22T01:08:01.9731088Z             },
2026-06-22T01:08:01.9731193Z             {
2026-06-22T01:08:01.9731320Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9731438Z               "line": 10508
2026-06-22T01:08:01.9731545Z             }
2026-06-22T01:08:01.9731635Z           ]
2026-06-22T01:08:01.9731744Z         }
2026-06-22T01:08:01.9731840Z       }
2026-06-22T01:08:01.9731949Z     },
2026-06-22T01:08:01.9732049Z     {
2026-06-22T01:08:01.9732164Z       "id": "REQ-SUBNET-2",
2026-06-22T01:08:01.9732441Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-22T01:08:01.9732559Z       "requiredStages": [
2026-06-22T01:08:01.9732664Z         "impl",
2026-06-22T01:08:01.9732765Z         "unit",
2026-06-22T01:08:01.9732879Z         "int"
2026-06-22T01:08:01.9732979Z       ],
2026-06-22T01:08:01.9733085Z       "stages": {
2026-06-22T01:08:01.9733193Z         "doc": {
2026-06-22T01:08:01.9733293Z           "complete": true,
2026-06-22T01:08:01.9733409Z           "evidence": [
2026-06-22T01:08:01.9733513Z             {
2026-06-22T01:08:01.9733708Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T01:08:01.9733816Z               "line": 60
2026-06-22T01:08:01.9733920Z             }
2026-06-22T01:08:01.9734015Z           ]
2026-06-22T01:08:01.9734116Z         },
2026-06-22T01:08:01.9734220Z         "impl": {
2026-06-22T01:08:01.9734330Z           "complete": true,
2026-06-22T01:08:01.9734444Z           "evidence": [
2026-06-22T01:08:01.9734544Z             {
2026-06-22T01:08:01.9734688Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.9734802Z               "line": 980
2026-06-22T01:08:01.9734901Z             },
2026-06-22T01:08:01.9735017Z             {
2026-06-22T01:08:01.9735165Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9735274Z               "line": 2233
2026-06-22T01:08:01.9735465Z             },
2026-06-22T01:08:01.9735565Z             {
2026-06-22T01:08:01.9735718Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9735827Z               "line": 683
2026-06-22T01:08:01.9735938Z             },
2026-06-22T01:08:01.9736037Z             {
2026-06-22T01:08:01.9736180Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T01:08:01.9736291Z               "line": 867
2026-06-22T01:08:01.9736399Z             },
2026-06-22T01:08:01.9736508Z             {
2026-06-22T01:08:01.9736655Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9736768Z               "line": 26
2026-06-22T01:08:01.9736978Z             },
2026-06-22T01:08:01.9737087Z             {
2026-06-22T01:08:01.9737236Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9737346Z               "line": 60
2026-06-22T01:08:01.9737454Z             },
2026-06-22T01:08:01.9737560Z             {
2026-06-22T01:08:01.9737708Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9737812Z               "line": 168
2026-06-22T01:08:01.9737918Z             },
2026-06-22T01:08:01.9738023Z             {
2026-06-22T01:08:01.9738166Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9738270Z               "line": 295
2026-06-22T01:08:01.9738375Z             },
2026-06-22T01:08:01.9738476Z             {
2026-06-22T01:08:01.9738608Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9738718Z               "line": 417
2026-06-22T01:08:01.9738829Z             },
2026-06-22T01:08:01.9738928Z             {
2026-06-22T01:08:01.9739160Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T01:08:01.9739273Z               "line": 252
2026-06-22T01:08:01.9739377Z             },
2026-06-22T01:08:01.9739478Z             {
2026-06-22T01:08:01.9739602Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9739720Z               "line": 3755
2026-06-22T01:08:01.9739822Z             },
2026-06-22T01:08:01.9739926Z             {
2026-06-22T01:08:01.9740054Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9740165Z               "line": 4256
2026-06-22T01:08:01.9740264Z             },
2026-06-22T01:08:01.9740369Z             {
2026-06-22T01:08:01.9740494Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9740593Z               "line": 4892
2026-06-22T01:08:01.9740703Z             }
2026-06-22T01:08:01.9740804Z           ]
2026-06-22T01:08:01.9740908Z         },
2026-06-22T01:08:01.9741008Z         "int": {
2026-06-22T01:08:01.9741114Z           "complete": true,
2026-06-22T01:08:01.9741223Z           "evidence": [
2026-06-22T01:08:01.9741328Z             {
2026-06-22T01:08:01.9741485Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-22T01:08:01.9741595Z               "line": 22
2026-06-22T01:08:01.9741701Z             },
2026-06-22T01:08:01.9741804Z             {
2026-06-22T01:08:01.9741951Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9742052Z               "line": 645
2026-06-22T01:08:01.9742157Z             },
2026-06-22T01:08:01.9742261Z             {
2026-06-22T01:08:01.9742400Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9742518Z               "line": 887
2026-06-22T01:08:01.9742619Z             }
2026-06-22T01:08:01.9742720Z           ]
2026-06-22T01:08:01.9742824Z         },
2026-06-22T01:08:01.9742929Z         "unit": {
2026-06-22T01:08:01.9743043Z           "complete": true,
2026-06-22T01:08:01.9743144Z           "evidence": [
2026-06-22T01:08:01.9743248Z             {
2026-06-22T01:08:01.9743392Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9743501Z               "line": 586
2026-06-22T01:08:01.9743612Z             },
2026-06-22T01:08:01.9743707Z             {
2026-06-22T01:08:01.9743835Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9743941Z               "line": 10004
2026-06-22T01:08:01.9744273Z             },
2026-06-22T01:08:01.9744376Z             {
2026-06-22T01:08:01.9744508Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9744623Z               "line": 10715
2026-06-22T01:08:01.9744723Z             }
2026-06-22T01:08:01.9744818Z           ]
2026-06-22T01:08:01.9744910Z         }
2026-06-22T01:08:01.9745014Z       }
2026-06-22T01:08:01.9745114Z     },
2026-06-22T01:08:01.9745215Z     {
2026-06-22T01:08:01.9745334Z       "id": "REQ-SUBNET-3",
2026-06-22T01:08:01.9745639Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-22T01:08:01.9745864Z       "requiredStages": [
2026-06-22T01:08:01.9745968Z         "impl",
2026-06-22T01:08:01.9746073Z         "unit"
2026-06-22T01:08:01.9746179Z       ],
2026-06-22T01:08:01.9746287Z       "stages": {
2026-06-22T01:08:01.9746397Z         "doc": {
2026-06-22T01:08:01.9746508Z           "complete": false,
2026-06-22T01:08:01.9746616Z           "evidence": []
2026-06-22T01:08:01.9746712Z         },
2026-06-22T01:08:01.9746828Z         "impl": {
2026-06-22T01:08:01.9746936Z           "complete": true,
2026-06-22T01:08:01.9747049Z           "evidence": [
2026-06-22T01:08:01.9747154Z             {
2026-06-22T01:08:01.9747476Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9747591Z               "line": 152
2026-06-22T01:08:01.9747690Z             },
2026-06-22T01:08:01.9747796Z             {
2026-06-22T01:08:01.9747948Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9748057Z               "line": 299
2026-06-22T01:08:01.9748159Z             },
2026-06-22T01:08:01.9748263Z             {
2026-06-22T01:08:01.9748416Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9748520Z               "line": 443
2026-06-22T01:08:01.9748625Z             },
2026-06-22T01:08:01.9748731Z             {
2026-06-22T01:08:01.9748877Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9749060Z               "line": 532
2026-06-22T01:08:01.9749164Z             },
2026-06-22T01:08:01.9749273Z             {
2026-06-22T01:08:01.9749418Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9749526Z               "line": 125
2026-06-22T01:08:01.9749630Z             },
2026-06-22T01:08:01.9749730Z             {
2026-06-22T01:08:01.9749880Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9749985Z               "line": 253
2026-06-22T01:08:01.9750086Z             },
2026-06-22T01:08:01.9750186Z             {
2026-06-22T01:08:01.9750329Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9750438Z               "line": 264
2026-06-22T01:08:01.9750538Z             },
2026-06-22T01:08:01.9750639Z             {
2026-06-22T01:08:01.9750787Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9750896Z               "line": 285
2026-06-22T01:08:01.9750997Z             },
2026-06-22T01:08:01.9751101Z             {
2026-06-22T01:08:01.9751253Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9751364Z               "line": 621
2026-06-22T01:08:01.9751464Z             },
2026-06-22T01:08:01.9751564Z             {
2026-06-22T01:08:01.9751707Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9751807Z               "line": 680
2026-06-22T01:08:01.9751918Z             },
2026-06-22T01:08:01.9752022Z             {
2026-06-22T01:08:01.9752169Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.9752275Z               "line": 61
2026-06-22T01:08:01.9752379Z             },
2026-06-22T01:08:01.9752483Z             {
2026-06-22T01:08:01.9752627Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.9752736Z               "line": 90
2026-06-22T01:08:01.9752845Z             },
2026-06-22T01:08:01.9752951Z             {
2026-06-22T01:08:01.9753203Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.9753313Z               "line": 125
2026-06-22T01:08:01.9753422Z             },
2026-06-22T01:08:01.9753523Z             {
2026-06-22T01:08:01.9753665Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T01:08:01.9753775Z               "line": 9
2026-06-22T01:08:01.9753877Z             },
2026-06-22T01:08:01.9753985Z             {
2026-06-22T01:08:01.9754113Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9754225Z               "line": 4093
2026-06-22T01:08:01.9754328Z             },
2026-06-22T01:08:01.9754428Z             {
2026-06-22T01:08:01.9754676Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9754790Z               "line": 445
2026-06-22T01:08:01.9754889Z             }
2026-06-22T01:08:01.9754988Z           ]
2026-06-22T01:08:01.9755092Z         },
2026-06-22T01:08:01.9755188Z         "int": {
2026-06-22T01:08:01.9755298Z           "complete": false,
2026-06-22T01:08:01.9755412Z           "evidence": []
2026-06-22T01:08:01.9755508Z         },
2026-06-22T01:08:01.9755617Z         "unit": {
2026-06-22T01:08:01.9755726Z           "complete": true,
2026-06-22T01:08:01.9755837Z           "evidence": [
2026-06-22T01:08:01.9755941Z             {
2026-06-22T01:08:01.9756095Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9756214Z               "line": 1356
2026-06-22T01:08:01.9756313Z             },
2026-06-22T01:08:01.9756419Z             {
2026-06-22T01:08:01.9756576Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9756685Z               "line": 1713
2026-06-22T01:08:01.9756791Z             },
2026-06-22T01:08:01.9756890Z             {
2026-06-22T01:08:01.9757044Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9757153Z               "line": 892
2026-06-22T01:08:01.9757262Z             },
2026-06-22T01:08:01.9757358Z             {
2026-06-22T01:08:01.9757505Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9757609Z               "line": 991
2026-06-22T01:08:01.9757714Z             },
2026-06-22T01:08:01.9757813Z             {
2026-06-22T01:08:01.9757950Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9758065Z               "line": 1041
2026-06-22T01:08:01.9758165Z             },
2026-06-22T01:08:01.9758298Z             {
2026-06-22T01:08:01.9758442Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9758551Z               "line": 1100
2026-06-22T01:08:01.9758657Z             },
2026-06-22T01:08:01.9758761Z             {
2026-06-22T01:08:01.9758918Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T01:08:01.9759114Z               "line": 234
2026-06-22T01:08:01.9759213Z             },
2026-06-22T01:08:01.9759324Z             {
2026-06-22T01:08:01.9759476Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T01:08:01.9759586Z               "line": 49
2026-06-22T01:08:01.9759696Z             },
2026-06-22T01:08:01.9759805Z             {
2026-06-22T01:08:01.9759930Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9760044Z               "line": 10357
2026-06-22T01:08:01.9760152Z             },
2026-06-22T01:08:01.9760252Z             {
2026-06-22T01:08:01.9760384Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9760497Z               "line": 10463
2026-06-22T01:08:01.9760603Z             },
2026-06-22T01:08:01.9760704Z             {
2026-06-22T01:08:01.9760831Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9760942Z               "line": 10681
2026-06-22T01:08:01.9761047Z             }
2026-06-22T01:08:01.9761146Z           ]
2026-06-22T01:08:01.9761247Z         }
2026-06-22T01:08:01.9761352Z       }
2026-06-22T01:08:01.9761446Z     },
2026-06-22T01:08:01.9761543Z     {
2026-06-22T01:08:01.9761661Z       "id": "REQ-SUBNET-4",
2026-06-22T01:08:01.9761981Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-22T01:08:01.9762206Z       "requiredStages": [
2026-06-22T01:08:01.9762314Z         "impl",
2026-06-22T01:08:01.9762424Z         "unit"
2026-06-22T01:08:01.9762516Z       ],
2026-06-22T01:08:01.9762620Z       "stages": {
2026-06-22T01:08:01.9762720Z         "doc": {
2026-06-22T01:08:01.9762835Z           "complete": true,
2026-06-22T01:08:01.9762949Z           "evidence": [
2026-06-22T01:08:01.9763057Z             {
2026-06-22T01:08:01.9763245Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T01:08:01.9763343Z               "line": 60
2026-06-22T01:08:01.9763539Z             }
2026-06-22T01:08:01.9763648Z           ]
2026-06-22T01:08:01.9763749Z         },
2026-06-22T01:08:01.9763863Z         "impl": {
2026-06-22T01:08:01.9763968Z           "complete": true,
2026-06-22T01:08:01.9764078Z           "evidence": [
2026-06-22T01:08:01.9764174Z             {
2026-06-22T01:08:01.9764311Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9764427Z               "line": 3399
2026-06-22T01:08:01.9764530Z             },
2026-06-22T01:08:01.9764640Z             {
2026-06-22T01:08:01.9764766Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9764878Z               "line": 4859
2026-06-22T01:08:01.9764989Z             },
2026-06-22T01:08:01.9765090Z             {
2026-06-22T01:08:01.9765222Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9765330Z               "line": 4892
2026-06-22T01:08:01.9765426Z             }
2026-06-22T01:08:01.9765538Z           ]
2026-06-22T01:08:01.9765638Z         },
2026-06-22T01:08:01.9765749Z         "int": {
2026-06-22T01:08:01.9765862Z           "complete": false,
2026-06-22T01:08:01.9765977Z           "evidence": []
2026-06-22T01:08:01.9766078Z         },
2026-06-22T01:08:01.9766191Z         "unit": {
2026-06-22T01:08:01.9766306Z           "complete": true,
2026-06-22T01:08:01.9766421Z           "evidence": [
2026-06-22T01:08:01.9766530Z             {
2026-06-22T01:08:01.9766665Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9766778Z               "line": 10120
2026-06-22T01:08:01.9766883Z             },
2026-06-22T01:08:01.9766989Z             {
2026-06-22T01:08:01.9767117Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9767226Z               "line": 10194
2026-06-22T01:08:01.9767328Z             }
2026-06-22T01:08:01.9767426Z           ]
2026-06-22T01:08:01.9767522Z         }
2026-06-22T01:08:01.9767623Z       }
2026-06-22T01:08:01.9767731Z     },
2026-06-22T01:08:01.9767827Z     {
2026-06-22T01:08:01.9767953Z       "id": "REQ-SUBNET-5",
2026-06-22T01:08:01.9769293Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-22T01:08:01.9769435Z       "requiredStages": [
2026-06-22T01:08:01.9769536Z         "impl",
2026-06-22T01:08:01.9769640Z         "unit",
2026-06-22T01:08:01.9769750Z         "int"
2026-06-22T01:08:01.9769846Z       ],
2026-06-22T01:08:01.9769955Z       "stages": {
2026-06-22T01:08:01.9770070Z         "doc": {
2026-06-22T01:08:01.9770181Z           "complete": false,
2026-06-22T01:08:01.9770289Z           "evidence": []
2026-06-22T01:08:01.9770394Z         },
2026-06-22T01:08:01.9770505Z         "impl": {
2026-06-22T01:08:01.9770618Z           "complete": true,
2026-06-22T01:08:01.9770731Z           "evidence": [
2026-06-22T01:08:01.9770851Z             {
2026-06-22T01:08:01.9771001Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T01:08:01.9771110Z               "line": 128
2026-06-22T01:08:01.9771207Z             },
2026-06-22T01:08:01.9771316Z             {
2026-06-22T01:08:01.9771464Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T01:08:01.9771673Z               "line": 413
2026-06-22T01:08:01.9771784Z             },
2026-06-22T01:08:01.9771874Z             {
2026-06-22T01:08:01.9772025Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9772136Z               "line": 74
2026-06-22T01:08:01.9772235Z             },
2026-06-22T01:08:01.9772345Z             {
2026-06-22T01:08:01.9772489Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.9772599Z               "line": 332
2026-06-22T01:08:01.9772694Z             },
2026-06-22T01:08:01.9772790Z             {
2026-06-22T01:08:01.9772928Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.9773128Z               "line": 621
2026-06-22T01:08:01.9773227Z             },
2026-06-22T01:08:01.9773329Z             {
2026-06-22T01:08:01.9773471Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:08:01.9773584Z               "line": 31
2026-06-22T01:08:01.9773694Z             },
2026-06-22T01:08:01.9773795Z             {
2026-06-22T01:08:01.9773946Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:08:01.9774057Z               "line": 50
2026-06-22T01:08:01.9774162Z             },
2026-06-22T01:08:01.9774266Z             {
2026-06-22T01:08:01.9774415Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:08:01.9774533Z               "line": 69
2026-06-22T01:08:01.9774633Z             },
2026-06-22T01:08:01.9774739Z             {
2026-06-22T01:08:01.9774880Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:08:01.9774987Z               "line": 113
2026-06-22T01:08:01.9775096Z             },
2026-06-22T01:08:01.9775191Z             {
2026-06-22T01:08:01.9775354Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T01:08:01.9775462Z               "line": 25
2026-06-22T01:08:01.9775568Z             },
2026-06-22T01:08:01.9775674Z             {
2026-06-22T01:08:01.9775829Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T01:08:01.9775939Z               "line": 34
2026-06-22T01:08:01.9776038Z             },
2026-06-22T01:08:01.9776141Z             {
2026-06-22T01:08:01.9776294Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:08:01.9776409Z               "line": 17
2026-06-22T01:08:01.9776518Z             },
2026-06-22T01:08:01.9776624Z             {
2026-06-22T01:08:01.9776761Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9776871Z               "line": 4817
2026-06-22T01:08:01.9776976Z             },
2026-06-22T01:08:01.9777066Z             {
2026-06-22T01:08:01.9777215Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T01:08:01.9777329Z               "line": 419
2026-06-22T01:08:01.9777428Z             }
2026-06-22T01:08:01.9777530Z           ]
2026-06-22T01:08:01.9777629Z         },
2026-06-22T01:08:01.9777729Z         "int": {
2026-06-22T01:08:01.9777835Z           "complete": true,
2026-06-22T01:08:01.9777953Z           "evidence": [
2026-06-22T01:08:01.9778067Z             {
2026-06-22T01:08:01.9778217Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9778329Z               "line": 821
2026-06-22T01:08:01.9778421Z             }
2026-06-22T01:08:01.9778532Z           ]
2026-06-22T01:08:01.9778630Z         },
2026-06-22T01:08:01.9778739Z         "unit": {
2026-06-22T01:08:01.9778858Z           "complete": true,
2026-06-22T01:08:01.9779056Z           "evidence": [
2026-06-22T01:08:01.9779166Z             {
2026-06-22T01:08:01.9779309Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.9779413Z               "line": 341
2026-06-22T01:08:01.9779524Z             },
2026-06-22T01:08:01.9779628Z             {
2026-06-22T01:08:01.9779772Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T01:08:01.9779881Z               "line": 1115
2026-06-22T01:08:01.9779995Z             },
2026-06-22T01:08:01.9780096Z             {
2026-06-22T01:08:01.9780348Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T01:08:01.9780464Z               "line": 151
2026-06-22T01:08:01.9780572Z             },
2026-06-22T01:08:01.9780672Z             {
2026-06-22T01:08:01.9780816Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T01:08:01.9780935Z               "line": 61
2026-06-22T01:08:01.9781041Z             },
2026-06-22T01:08:01.9781145Z             {
2026-06-22T01:08:01.9781300Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:08:01.9781416Z               "line": 111
2026-06-22T01:08:01.9781523Z             },
2026-06-22T01:08:01.9781627Z             {
2026-06-22T01:08:01.9781871Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:08:01.9781976Z               "line": 138
2026-06-22T01:08:01.9782077Z             },
2026-06-22T01:08:01.9782176Z             {
2026-06-22T01:08:01.9782344Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T01:08:01.9782481Z               "line": 148
2026-06-22T01:08:01.9782576Z             },
2026-06-22T01:08:01.9782683Z             {
2026-06-22T01:08:01.9782801Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9782929Z               "line": 10021
2026-06-22T01:08:01.9783030Z             }
2026-06-22T01:08:01.9783135Z           ]
2026-06-22T01:08:01.9783234Z         }
2026-06-22T01:08:01.9783326Z       }
2026-06-22T01:08:01.9783430Z     },
2026-06-22T01:08:01.9783525Z     {
2026-06-22T01:08:01.9783646Z       "id": "REQ-SUBNET-6",
2026-06-22T01:08:01.9784393Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-22T01:08:01.9784511Z       "requiredStages": [
2026-06-22T01:08:01.9784612Z         "impl",
2026-06-22T01:08:01.9784713Z         "unit"
2026-06-22T01:08:01.9784840Z       ],
2026-06-22T01:08:01.9784946Z       "stages": {
2026-06-22T01:08:01.9785051Z         "doc": {
2026-06-22T01:08:01.9785150Z           "complete": false,
2026-06-22T01:08:01.9785251Z           "evidence": []
2026-06-22T01:08:01.9785355Z         },
2026-06-22T01:08:01.9785455Z         "impl": {
2026-06-22T01:08:01.9785557Z           "complete": true,
2026-06-22T01:08:01.9785665Z           "evidence": [
2026-06-22T01:08:01.9785765Z             {
2026-06-22T01:08:01.9785905Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9786013Z               "line": 254
2026-06-22T01:08:01.9786119Z             },
2026-06-22T01:08:01.9786225Z             {
2026-06-22T01:08:01.9786337Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9786446Z               "line": 4475
2026-06-22T01:08:01.9786542Z             },
2026-06-22T01:08:01.9786654Z             {
2026-06-22T01:08:01.9786772Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9786884Z               "line": 4492
2026-06-22T01:08:01.9786988Z             },
2026-06-22T01:08:01.9787092Z             {
2026-06-22T01:08:01.9787217Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9787326Z               "line": 4545
2026-06-22T01:08:01.9787436Z             },
2026-06-22T01:08:01.9787527Z             {
2026-06-22T01:08:01.9787650Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9787756Z               "line": 4568
2026-06-22T01:08:01.9787866Z             }
2026-06-22T01:08:01.9787960Z           ]
2026-06-22T01:08:01.9788055Z         },
2026-06-22T01:08:01.9788166Z         "int": {
2026-06-22T01:08:01.9788275Z           "complete": false,
2026-06-22T01:08:01.9788385Z           "evidence": []
2026-06-22T01:08:01.9788486Z         },
2026-06-22T01:08:01.9788600Z         "unit": {
2026-06-22T01:08:01.9788705Z           "complete": true,
2026-06-22T01:08:01.9788806Z           "evidence": [
2026-06-22T01:08:01.9788914Z             {
2026-06-22T01:08:01.9789111Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9789318Z               "line": 10035
2026-06-22T01:08:01.9789418Z             },
2026-06-22T01:08:01.9789521Z             {
2026-06-22T01:08:01.9789654Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9789760Z               "line": 10068
2026-06-22T01:08:01.9789864Z             },
2026-06-22T01:08:01.9789964Z             {
2026-06-22T01:08:01.9790084Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9790188Z               "line": 10077
2026-06-22T01:08:01.9790293Z             }
2026-06-22T01:08:01.9790394Z           ]
2026-06-22T01:08:01.9790489Z         }
2026-06-22T01:08:01.9790714Z       }
2026-06-22T01:08:01.9790804Z     },
2026-06-22T01:08:01.9790909Z     {
2026-06-22T01:08:01.9791020Z       "id": "REQ-SUBNET-7",
2026-06-22T01:08:01.9792675Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-22T01:08:01.9792788Z       "requiredStages": [
2026-06-22T01:08:01.9792889Z         "impl",
2026-06-22T01:08:01.9792994Z         "unit"
2026-06-22T01:08:01.9793093Z       ],
2026-06-22T01:08:01.9793194Z       "stages": {
2026-06-22T01:08:01.9793299Z         "doc": {
2026-06-22T01:08:01.9793422Z           "complete": false,
2026-06-22T01:08:01.9793528Z           "evidence": []
2026-06-22T01:08:01.9793633Z         },
2026-06-22T01:08:01.9793728Z         "impl": {
2026-06-22T01:08:01.9793829Z           "complete": true,
2026-06-22T01:08:01.9793943Z           "evidence": [
2026-06-22T01:08:01.9794043Z             {
2026-06-22T01:08:01.9794202Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T01:08:01.9794309Z               "line": 17
2026-06-22T01:08:01.9794405Z             },
2026-06-22T01:08:01.9794507Z             {
2026-06-22T01:08:01.9794643Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9794747Z               "line": 103
2026-06-22T01:08:01.9794843Z             },
2026-06-22T01:08:01.9794944Z             {
2026-06-22T01:08:01.9795071Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T01:08:01.9795168Z               "line": 312
2026-06-22T01:08:01.9795273Z             },
2026-06-22T01:08:01.9795371Z             {
2026-06-22T01:08:01.9795511Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T01:08:01.9795625Z               "line": 131
2026-06-22T01:08:01.9795725Z             },
2026-06-22T01:08:01.9795826Z             {
2026-06-22T01:08:01.9795963Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9796073Z               "line": 160
2026-06-22T01:08:01.9796183Z             },
2026-06-22T01:08:01.9796283Z             {
2026-06-22T01:08:01.9796432Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9796540Z               "line": 447
2026-06-22T01:08:01.9796645Z             },
2026-06-22T01:08:01.9796747Z             {
2026-06-22T01:08:01.9796893Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9797006Z               "line": 670
2026-06-22T01:08:01.9797106Z             },
2026-06-22T01:08:01.9797210Z             {
2026-06-22T01:08:01.9797338Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9797449Z               "line": 710
2026-06-22T01:08:01.9797548Z             },
2026-06-22T01:08:01.9797653Z             {
2026-06-22T01:08:01.9797801Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9797910Z               "line": 766
2026-06-22T01:08:01.9798011Z             },
2026-06-22T01:08:01.9798191Z             {
2026-06-22T01:08:01.9798345Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9798454Z               "line": 136
2026-06-22T01:08:01.9798558Z             },
2026-06-22T01:08:01.9798665Z             {
2026-06-22T01:08:01.9798797Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9798906Z               "line": 139
2026-06-22T01:08:01.9799083Z             }
2026-06-22T01:08:01.9799188Z           ]
2026-06-22T01:08:01.9799290Z         },
2026-06-22T01:08:01.9799398Z         "int": {
2026-06-22T01:08:01.9799531Z           "complete": false,
2026-06-22T01:08:01.9803043Z           "evidence": []
2026-06-22T01:08:01.9803301Z         },
2026-06-22T01:08:01.9803410Z         "unit": {
2026-06-22T01:08:01.9803530Z           "complete": true,
2026-06-22T01:08:01.9803630Z           "evidence": [
2026-06-22T01:08:01.9803735Z             {
2026-06-22T01:08:01.9803883Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T01:08:01.9803997Z               "line": 136
2026-06-22T01:08:01.9804103Z             },
2026-06-22T01:08:01.9804202Z             {
2026-06-22T01:08:01.9804364Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T01:08:01.9804471Z               "line": 156
2026-06-22T01:08:01.9804584Z             },
2026-06-22T01:08:01.9804679Z             {
2026-06-22T01:08:01.9804827Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9804941Z               "line": 987
2026-06-22T01:08:01.9805038Z             },
2026-06-22T01:08:01.9805138Z             {
2026-06-22T01:08:01.9805288Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T01:08:01.9805399Z               "line": 1009
2026-06-22T01:08:01.9805504Z             },
2026-06-22T01:08:01.9805603Z             {
2026-06-22T01:08:01.9805752Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T01:08:01.9805861Z               "line": 1419
2026-06-22T01:08:01.9805960Z             },
2026-06-22T01:08:01.9806071Z             {
2026-06-22T01:08:01.9806208Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T01:08:01.9806319Z               "line": 1036
2026-06-22T01:08:01.9806419Z             }
2026-06-22T01:08:01.9806519Z           ]
2026-06-22T01:08:01.9806619Z         }
2026-06-22T01:08:01.9806724Z       }
2026-06-22T01:08:01.9806824Z     },
2026-06-22T01:08:01.9806919Z     {
2026-06-22T01:08:01.9807034Z       "id": "REQ-SUBNET-8",
2026-06-22T01:08:01.9808188Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-22T01:08:01.9808319Z       "requiredStages": [
2026-06-22T01:08:01.9808428Z         "impl",
2026-06-22T01:08:01.9808522Z         "unit"
2026-06-22T01:08:01.9808633Z       ],
2026-06-22T01:08:01.9808737Z       "stages": {
2026-06-22T01:08:01.9808837Z         "doc": {
2026-06-22T01:08:01.9809043Z           "complete": false,
2026-06-22T01:08:01.9809157Z           "evidence": []
2026-06-22T01:08:01.9809253Z         },
2026-06-22T01:08:01.9809357Z         "impl": {
2026-06-22T01:08:01.9809476Z           "complete": true,
2026-06-22T01:08:01.9809582Z           "evidence": [
2026-06-22T01:08:01.9809686Z             {
2026-06-22T01:08:01.9809816Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9809930Z               "line": 3835
2026-06-22T01:08:01.9810024Z             },
2026-06-22T01:08:01.9810131Z             {
2026-06-22T01:08:01.9810250Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9810353Z               "line": 3864
2026-06-22T01:08:01.9810453Z             },
2026-06-22T01:08:01.9810543Z             {
2026-06-22T01:08:01.9810666Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9810876Z               "line": 3881
2026-06-22T01:08:01.9810980Z             },
2026-06-22T01:08:01.9811085Z             {
2026-06-22T01:08:01.9811195Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9811304Z               "line": 3904
2026-06-22T01:08:01.9811399Z             },
2026-06-22T01:08:01.9811496Z             {
2026-06-22T01:08:01.9811619Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9811724Z               "line": 4318
2026-06-22T01:08:01.9811825Z             }
2026-06-22T01:08:01.9811924Z           ]
2026-06-22T01:08:01.9812029Z         },
2026-06-22T01:08:01.9812130Z         "int": {
2026-06-22T01:08:01.9812233Z           "complete": false,
2026-06-22T01:08:01.9812440Z           "evidence": []
2026-06-22T01:08:01.9812544Z         },
2026-06-22T01:08:01.9812649Z         "unit": {
2026-06-22T01:08:01.9812760Z           "complete": true,
2026-06-22T01:08:01.9812868Z           "evidence": [
2026-06-22T01:08:01.9812967Z             {
2026-06-22T01:08:01.9813096Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9813195Z               "line": 10225
2026-06-22T01:08:01.9813303Z             },
2026-06-22T01:08:01.9813404Z             {
2026-06-22T01:08:01.9813519Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9813632Z               "line": 10241
2026-06-22T01:08:01.9813729Z             }
2026-06-22T01:08:01.9813834Z           ]
2026-06-22T01:08:01.9813942Z         }
2026-06-22T01:08:01.9814043Z       }
2026-06-22T01:08:01.9814133Z     },
2026-06-22T01:08:01.9814237Z     {
2026-06-22T01:08:01.9814344Z       "id": "REQ-TERM-1",
2026-06-22T01:08:01.9814533Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-22T01:08:01.9814658Z       "requiredStages": [
2026-06-22T01:08:01.9814767Z         "impl",
2026-06-22T01:08:01.9814867Z         "unit"
2026-06-22T01:08:01.9814969Z       ],
2026-06-22T01:08:01.9815068Z       "stages": {
2026-06-22T01:08:01.9815168Z         "doc": {
2026-06-22T01:08:01.9815279Z           "complete": false,
2026-06-22T01:08:01.9815397Z           "evidence": []
2026-06-22T01:08:01.9815497Z         },
2026-06-22T01:08:01.9815603Z         "impl": {
2026-06-22T01:08:01.9815712Z           "complete": true,
2026-06-22T01:08:01.9815815Z           "evidence": [
2026-06-22T01:08:01.9815916Z             {
2026-06-22T01:08:01.9816045Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:08:01.9816149Z               "line": 59
2026-06-22T01:08:01.9816254Z             },
2026-06-22T01:08:01.9816350Z             {
2026-06-22T01:08:01.9816483Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T01:08:01.9816589Z               "line": 234
2026-06-22T01:08:01.9816698Z             },
2026-06-22T01:08:01.9816797Z             {
2026-06-22T01:08:01.9816932Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T01:08:01.9817046Z               "line": 100
2026-06-22T01:08:01.9817141Z             }
2026-06-22T01:08:01.9817237Z           ]
2026-06-22T01:08:01.9817336Z         },
2026-06-22T01:08:01.9817436Z         "int": {
2026-06-22T01:08:01.9817547Z           "complete": false,
2026-06-22T01:08:01.9817660Z           "evidence": []
2026-06-22T01:08:01.9817765Z         },
2026-06-22T01:08:01.9817862Z         "unit": {
2026-06-22T01:08:01.9817975Z           "complete": true,
2026-06-22T01:08:01.9818079Z           "evidence": [
2026-06-22T01:08:01.9818184Z             {
2026-06-22T01:08:01.9818320Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T01:08:01.9818429Z               "line": 24
2026-06-22T01:08:01.9818535Z             },
2026-06-22T01:08:01.9818635Z             {
2026-06-22T01:08:01.9818773Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T01:08:01.9818874Z               "line": 56
2026-06-22T01:08:01.9819068Z             }
2026-06-22T01:08:01.9819170Z           ]
2026-06-22T01:08:01.9819269Z         }
2026-06-22T01:08:01.9819373Z       }
2026-06-22T01:08:01.9819470Z     },
2026-06-22T01:08:01.9819579Z     {
2026-06-22T01:08:01.9819785Z       "id": "REQ-TERM-2",
2026-06-22T01:08:01.9819989Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-22T01:08:01.9820095Z       "requiredStages": [
2026-06-22T01:08:01.9820199Z         "impl",
2026-06-22T01:08:01.9820308Z         "unit"
2026-06-22T01:08:01.9820405Z       ],
2026-06-22T01:08:01.9820504Z       "stages": {
2026-06-22T01:08:01.9820609Z         "doc": {
2026-06-22T01:08:01.9820710Z           "complete": false,
2026-06-22T01:08:01.9820805Z           "evidence": []
2026-06-22T01:08:01.9820909Z         },
2026-06-22T01:08:01.9821018Z         "impl": {
2026-06-22T01:08:01.9821127Z           "complete": true,
2026-06-22T01:08:01.9821330Z           "evidence": [
2026-06-22T01:08:01.9821431Z             {
2026-06-22T01:08:01.9821573Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T01:08:01.9821683Z               "line": 117
2026-06-22T01:08:01.9821789Z             },
2026-06-22T01:08:01.9821893Z             {
2026-06-22T01:08:01.9822027Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T01:08:01.9822141Z               "line": 127
2026-06-22T01:08:01.9822236Z             }
2026-06-22T01:08:01.9822337Z           ]
2026-06-22T01:08:01.9822427Z         },
2026-06-22T01:08:01.9822532Z         "int": {
2026-06-22T01:08:01.9822637Z           "complete": false,
2026-06-22T01:08:01.9822733Z           "evidence": []
2026-06-22T01:08:01.9822832Z         },
2026-06-22T01:08:01.9822933Z         "unit": {
2026-06-22T01:08:01.9823033Z           "complete": true,
2026-06-22T01:08:01.9823137Z           "evidence": [
2026-06-22T01:08:01.9823238Z             {
2026-06-22T01:08:01.9823372Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T01:08:01.9823480Z               "line": 46
2026-06-22T01:08:01.9823584Z             },
2026-06-22T01:08:01.9823675Z             {
2026-06-22T01:08:01.9823816Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T01:08:01.9823921Z               "line": 77
2026-06-22T01:08:01.9824031Z             }
2026-06-22T01:08:01.9824130Z           ]
2026-06-22T01:08:01.9824216Z         }
2026-06-22T01:08:01.9824313Z       }
2026-06-22T01:08:01.9824417Z     },
2026-06-22T01:08:01.9824502Z     {
2026-06-22T01:08:01.9824608Z       "id": "REQ-TERM-3",
2026-06-22T01:08:01.9824769Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-22T01:08:01.9824870Z       "requiredStages": [
2026-06-22T01:08:01.9824975Z         "impl",
2026-06-22T01:08:01.9825075Z         "unit"
2026-06-22T01:08:01.9825166Z       ],
2026-06-22T01:08:01.9825262Z       "stages": {
2026-06-22T01:08:01.9825361Z         "doc": {
2026-06-22T01:08:01.9825471Z           "complete": false,
2026-06-22T01:08:01.9825576Z           "evidence": []
2026-06-22T01:08:01.9825670Z         },
2026-06-22T01:08:01.9825766Z         "impl": {
2026-06-22T01:08:01.9825872Z           "complete": true,
2026-06-22T01:08:01.9825990Z           "evidence": [
2026-06-22T01:08:01.9826090Z             {
2026-06-22T01:08:01.9826225Z               "path": "crates/spt-term/src/stream.rs",
2026-06-22T01:08:01.9826337Z               "line": 71
2026-06-22T01:08:01.9826437Z             }
2026-06-22T01:08:01.9826533Z           ]
2026-06-22T01:08:01.9826629Z         },
2026-06-22T01:08:01.9826733Z         "int": {
2026-06-22T01:08:01.9826828Z           "complete": false,
2026-06-22T01:08:01.9826949Z           "evidence": []
2026-06-22T01:08:01.9827038Z         },
2026-06-22T01:08:01.9827139Z         "unit": {
2026-06-22T01:08:01.9827253Z           "complete": true,
2026-06-22T01:08:01.9827357Z           "evidence": [
2026-06-22T01:08:01.9827458Z             {
2026-06-22T01:08:01.9827586Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T01:08:01.9827701Z               "line": 37
2026-06-22T01:08:01.9827807Z             },
2026-06-22T01:08:01.9827915Z             {
2026-06-22T01:08:01.9828049Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T01:08:01.9828151Z               "line": 67
2026-06-22T01:08:01.9828249Z             }
2026-06-22T01:08:01.9828442Z           ]
2026-06-22T01:08:01.9828535Z         }
2026-06-22T01:08:01.9828644Z       }
2026-06-22T01:08:01.9828734Z     },
2026-06-22T01:08:01.9828834Z     {
2026-06-22T01:08:01.9828938Z       "id": "REQ-TERM-4",
2026-06-22T01:08:01.9829515Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-22T01:08:01.9829624Z       "requiredStages": [
2026-06-22T01:08:01.9829730Z         "impl",
2026-06-22T01:08:01.9829830Z         "unit",
2026-06-22T01:08:01.9829929Z         "int"
2026-06-22T01:08:01.9830125Z       ],
2026-06-22T01:08:01.9830215Z       "stages": {
2026-06-22T01:08:01.9830335Z         "doc": {
2026-06-22T01:08:01.9830439Z           "complete": false,
2026-06-22T01:08:01.9830549Z           "evidence": []
2026-06-22T01:08:01.9830650Z         },
2026-06-22T01:08:01.9830749Z         "impl": {
2026-06-22T01:08:01.9830864Z           "complete": true,
2026-06-22T01:08:01.9830970Z           "evidence": [
2026-06-22T01:08:01.9831074Z             {
2026-06-22T01:08:01.9831222Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9831342Z               "line": 37
2026-06-22T01:08:01.9831435Z             },
2026-06-22T01:08:01.9831534Z             {
2026-06-22T01:08:01.9831678Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9831781Z               "line": 25
2026-06-22T01:08:01.9831890Z             },
2026-06-22T01:08:01.9831991Z             {
2026-06-22T01:08:01.9832143Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9832282Z               "line": 114
2026-06-22T01:08:01.9832382Z             },
2026-06-22T01:08:01.9832486Z             {
2026-06-22T01:08:01.9832611Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9832711Z               "line": 267
2026-06-22T01:08:01.9832796Z             },
2026-06-22T01:08:01.9832902Z             {
2026-06-22T01:08:01.9833049Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9833149Z               "line": 289
2026-06-22T01:08:01.9833236Z             },
2026-06-22T01:08:01.9833335Z             {
2026-06-22T01:08:01.9833464Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9833575Z               "line": 307
2026-06-22T01:08:01.9833673Z             },
2026-06-22T01:08:01.9833774Z             {
2026-06-22T01:08:01.9833899Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:08:01.9834012Z               "line": 33
2026-06-22T01:08:01.9834111Z             },
2026-06-22T01:08:01.9834211Z             {
2026-06-22T01:08:01.9834343Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9834442Z               "line": 52
2026-06-22T01:08:01.9834543Z             },
2026-06-22T01:08:01.9834639Z             {
2026-06-22T01:08:01.9834767Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9834868Z               "line": 180
2026-06-22T01:08:01.9834973Z             },
2026-06-22T01:08:01.9835062Z             {
2026-06-22T01:08:01.9835197Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9835297Z               "line": 190
2026-06-22T01:08:01.9835396Z             },
2026-06-22T01:08:01.9835497Z             {
2026-06-22T01:08:01.9835631Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9835735Z               "line": 250
2026-06-22T01:08:01.9835841Z             },
2026-06-22T01:08:01.9835940Z             {
2026-06-22T01:08:01.9836079Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9836179Z               "line": 284
2026-06-22T01:08:01.9836284Z             },
2026-06-22T01:08:01.9836379Z             {
2026-06-22T01:08:01.9836517Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9836622Z               "line": 295
2026-06-22T01:08:01.9836723Z             },
2026-06-22T01:08:01.9836931Z             {
2026-06-22T01:08:01.9837055Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9837156Z               "line": 1193
2026-06-22T01:08:01.9837255Z             }
2026-06-22T01:08:01.9837360Z           ]
2026-06-22T01:08:01.9837456Z         },
2026-06-22T01:08:01.9837560Z         "int": {
2026-06-22T01:08:01.9837670Z           "complete": true,
2026-06-22T01:08:01.9837776Z           "evidence": [
2026-06-22T01:08:01.9837889Z             {
2026-06-22T01:08:01.9838014Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-22T01:08:01.9838114Z               "line": 18
2026-06-22T01:08:01.9838223Z             }
2026-06-22T01:08:01.9838382Z           ]
2026-06-22T01:08:01.9838490Z         },
2026-06-22T01:08:01.9838590Z         "unit": {
2026-06-22T01:08:01.9838691Z           "complete": true,
2026-06-22T01:08:01.9838795Z           "evidence": [
2026-06-22T01:08:01.9838895Z             {
2026-06-22T01:08:01.9839105Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9839209Z               "line": 364
2026-06-22T01:08:01.9839319Z             },
2026-06-22T01:08:01.9839413Z             {
2026-06-22T01:08:01.9839564Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9839665Z               "line": 416
2026-06-22T01:08:01.9839765Z             },
2026-06-22T01:08:01.9839869Z             {
2026-06-22T01:08:01.9840004Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9840112Z               "line": 426
2026-06-22T01:08:01.9840212Z             },
2026-06-22T01:08:01.9840314Z             {
2026-06-22T01:08:01.9840446Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9840557Z               "line": 436
2026-06-22T01:08:01.9840661Z             },
2026-06-22T01:08:01.9840756Z             {
2026-06-22T01:08:01.9840905Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9841014Z               "line": 456
2026-06-22T01:08:01.9841119Z             },
2026-06-22T01:08:01.9841220Z             {
2026-06-22T01:08:01.9841357Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9841457Z               "line": 478
2026-06-22T01:08:01.9841559Z             },
2026-06-22T01:08:01.9841666Z             {
2026-06-22T01:08:01.9841796Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9841907Z               "line": 491
2026-06-22T01:08:01.9842015Z             },
2026-06-22T01:08:01.9842104Z             {
2026-06-22T01:08:01.9842234Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T01:08:01.9842336Z               "line": 502
2026-06-22T01:08:01.9842440Z             },
2026-06-22T01:08:01.9842546Z             {
2026-06-22T01:08:01.9842679Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:08:01.9842789Z               "line": 108
2026-06-22T01:08:01.9842885Z             },
2026-06-22T01:08:01.9842984Z             {
2026-06-22T01:08:01.9843104Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T01:08:01.9843209Z               "line": 119
2026-06-22T01:08:01.9843313Z             },
2026-06-22T01:08:01.9843414Z             {
2026-06-22T01:08:01.9843547Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T01:08:01.9843652Z               "line": 127
2026-06-22T01:08:01.9843753Z             },
2026-06-22T01:08:01.9843853Z             {
2026-06-22T01:08:01.9843981Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9844201Z               "line": 474
2026-06-22T01:08:01.9844306Z             },
2026-06-22T01:08:01.9844402Z             {
2026-06-22T01:08:01.9844530Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9844638Z               "line": 501
2026-06-22T01:08:01.9844738Z             },
2026-06-22T01:08:01.9844842Z             {
2026-06-22T01:08:01.9844978Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9845080Z               "line": 520
2026-06-22T01:08:01.9845288Z             },
2026-06-22T01:08:01.9845385Z             {
2026-06-22T01:08:01.9845523Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9845627Z               "line": 535
2026-06-22T01:08:01.9845733Z             },
2026-06-22T01:08:01.9845833Z             {
2026-06-22T01:08:01.9845966Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9846072Z               "line": 561
2026-06-22T01:08:01.9846171Z             },
2026-06-22T01:08:01.9846271Z             {
2026-06-22T01:08:01.9846405Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9846515Z               "line": 581
2026-06-22T01:08:01.9846720Z             },
2026-06-22T01:08:01.9846824Z             {
2026-06-22T01:08:01.9846964Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9847068Z               "line": 591
2026-06-22T01:08:01.9847173Z             },
2026-06-22T01:08:01.9847439Z             {
2026-06-22T01:08:01.9847577Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9847683Z               "line": 683
2026-06-22T01:08:01.9847787Z             },
2026-06-22T01:08:01.9847887Z             {
2026-06-22T01:08:01.9848017Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9848125Z               "line": 885
2026-06-22T01:08:01.9848216Z             },
2026-06-22T01:08:01.9848317Z             {
2026-06-22T01:08:01.9848449Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9848549Z               "line": 9792
2026-06-22T01:08:01.9848660Z             }
2026-06-22T01:08:01.9848755Z           ]
2026-06-22T01:08:01.9848855Z         }
2026-06-22T01:08:01.9849012Z       }
2026-06-22T01:08:01.9849112Z     },
2026-06-22T01:08:01.9849209Z     {
2026-06-22T01:08:01.9849318Z       "id": "REQ-TERM-5",
2026-06-22T01:08:01.9850831Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-22T01:08:01.9850950Z       "requiredStages": [
2026-06-22T01:08:01.9851049Z         "doc",
2026-06-22T01:08:01.9851155Z         "impl",
2026-06-22T01:08:01.9851255Z         "unit",
2026-06-22T01:08:01.9851359Z         "int"
2026-06-22T01:08:01.9851460Z       ],
2026-06-22T01:08:01.9851565Z       "stages": {
2026-06-22T01:08:01.9851659Z         "doc": {
2026-06-22T01:08:01.9851775Z           "complete": true,
2026-06-22T01:08:01.9851884Z           "evidence": [
2026-06-22T01:08:01.9851974Z             {
2026-06-22T01:08:01.9852109Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:01.9852213Z               "line": 234
2026-06-22T01:08:01.9852318Z             }
2026-06-22T01:08:01.9852419Z           ]
2026-06-22T01:08:01.9852519Z         },
2026-06-22T01:08:01.9852617Z         "impl": {
2026-06-22T01:08:01.9852722Z           "complete": true,
2026-06-22T01:08:01.9852827Z           "evidence": [
2026-06-22T01:08:01.9852925Z             {
2026-06-22T01:08:01.9853068Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9853174Z               "line": 75
2026-06-22T01:08:01.9853277Z             },
2026-06-22T01:08:01.9853378Z             {
2026-06-22T01:08:01.9853503Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9853616Z               "line": 131
2026-06-22T01:08:01.9853713Z             },
2026-06-22T01:08:01.9853817Z             {
2026-06-22T01:08:01.9853940Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9854056Z               "line": 22
2026-06-22T01:08:01.9854160Z             },
2026-06-22T01:08:01.9854361Z             {
2026-06-22T01:08:01.9854493Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9854598Z               "line": 87
2026-06-22T01:08:01.9854700Z             },
2026-06-22T01:08:01.9854808Z             {
2026-06-22T01:08:01.9854933Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T01:08:01.9855043Z               "line": 30
2026-06-22T01:08:01.9855142Z             },
2026-06-22T01:08:01.9855231Z             {
2026-06-22T01:08:01.9855365Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9855477Z               "line": 103
2026-06-22T01:08:01.9855582Z             },
2026-06-22T01:08:01.9855820Z             {
2026-06-22T01:08:01.9855955Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9856050Z               "line": 167
2026-06-22T01:08:01.9856140Z             },
2026-06-22T01:08:01.9856226Z             {
2026-06-22T01:08:01.9856345Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9856445Z               "line": 434
2026-06-22T01:08:01.9856531Z             },
2026-06-22T01:08:01.9856622Z             {
2026-06-22T01:08:01.9856727Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9856822Z               "line": 5650
2026-06-22T01:08:01.9856904Z             },
2026-06-22T01:08:01.9856999Z             {
2026-06-22T01:08:01.9857108Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9857190Z               "line": 5957
2026-06-22T01:08:01.9857280Z             }
2026-06-22T01:08:01.9857365Z           ]
2026-06-22T01:08:01.9857452Z         },
2026-06-22T01:08:01.9857543Z         "int": {
2026-06-22T01:08:01.9857637Z           "complete": true,
2026-06-22T01:08:01.9857738Z           "evidence": [
2026-06-22T01:08:01.9857820Z             {
2026-06-22T01:08:01.9857971Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T01:08:01.9858061Z               "line": 17
2026-06-22T01:08:01.9858151Z             }
2026-06-22T01:08:01.9858228Z           ]
2026-06-22T01:08:01.9858314Z         },
2026-06-22T01:08:01.9858403Z         "unit": {
2026-06-22T01:08:01.9858490Z           "complete": true,
2026-06-22T01:08:01.9858577Z           "evidence": [
2026-06-22T01:08:01.9858657Z             {
2026-06-22T01:08:01.9858786Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9858872Z               "line": 375
2026-06-22T01:08:01.9859029Z             },
2026-06-22T01:08:01.9859110Z             {
2026-06-22T01:08:01.9859225Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9859315Z               "line": 162
2026-06-22T01:08:01.9859395Z             },
2026-06-22T01:08:01.9859492Z             {
2026-06-22T01:08:01.9859596Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9859691Z               "line": 179
2026-06-22T01:08:01.9859769Z             },
2026-06-22T01:08:01.9859854Z             {
2026-06-22T01:08:01.9859963Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9860049Z               "line": 201
2026-06-22T01:08:01.9860131Z             },
2026-06-22T01:08:01.9860220Z             {
2026-06-22T01:08:01.9860329Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9860425Z               "line": 212
2026-06-22T01:08:01.9860501Z             },
2026-06-22T01:08:01.9860590Z             {
2026-06-22T01:08:01.9860698Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T01:08:01.9860805Z               "line": 223
2026-06-22T01:08:01.9860890Z             },
2026-06-22T01:08:01.9860985Z             {
2026-06-22T01:08:01.9861115Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9861209Z               "line": 1525
2026-06-22T01:08:01.9861290Z             },
2026-06-22T01:08:01.9861372Z             {
2026-06-22T01:08:01.9861495Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9861581Z               "line": 1568
2026-06-22T01:08:01.9861667Z             },
2026-06-22T01:08:01.9861872Z             {
2026-06-22T01:08:01.9861986Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9862087Z               "line": 606
2026-06-22T01:08:01.9862163Z             },
2026-06-22T01:08:01.9862253Z             {
2026-06-22T01:08:01.9862374Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9862463Z               "line": 634
2026-06-22T01:08:01.9862554Z             },
2026-06-22T01:08:01.9862641Z             {
2026-06-22T01:08:01.9862759Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9862845Z               "line": 646
2026-06-22T01:08:01.9863027Z             },
2026-06-22T01:08:01.9863116Z             {
2026-06-22T01:08:01.9863230Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9863315Z               "line": 669
2026-06-22T01:08:01.9863401Z             },
2026-06-22T01:08:01.9863485Z             {
2026-06-22T01:08:01.9863580Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9863672Z               "line": 8503
2026-06-22T01:08:01.9863772Z             },
2026-06-22T01:08:01.9863861Z             {
2026-06-22T01:08:01.9863968Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9864053Z               "line": 8561
2026-06-22T01:08:01.9864138Z             }
2026-06-22T01:08:01.9864219Z           ]
2026-06-22T01:08:01.9864311Z         }
2026-06-22T01:08:01.9864402Z       }
2026-06-22T01:08:01.9864486Z     },
2026-06-22T01:08:01.9864573Z     {
2026-06-22T01:08:01.9864663Z       "id": "REQ-TERM-6",
2026-06-22T01:08:01.9865759Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-22T01:08:01.9865868Z       "requiredStages": [
2026-06-22T01:08:01.9865958Z         "impl",
2026-06-22T01:08:01.9866042Z         "unit",
2026-06-22T01:08:01.9866127Z         "int"
2026-06-22T01:08:01.9866214Z       ],
2026-06-22T01:08:01.9866301Z       "stages": {
2026-06-22T01:08:01.9866380Z         "doc": {
2026-06-22T01:08:01.9866486Z           "complete": false,
2026-06-22T01:08:01.9866572Z           "evidence": []
2026-06-22T01:08:01.9866667Z         },
2026-06-22T01:08:01.9866762Z         "impl": {
2026-06-22T01:08:01.9866859Z           "complete": true,
2026-06-22T01:08:01.9866954Z           "evidence": [
2026-06-22T01:08:01.9867038Z             {
2026-06-22T01:08:01.9867173Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9867263Z               "line": 132
2026-06-22T01:08:01.9867348Z             },
2026-06-22T01:08:01.9867430Z             {
2026-06-22T01:08:01.9867544Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9867635Z               "line": 187
2026-06-22T01:08:01.9867720Z             },
2026-06-22T01:08:01.9867808Z             {
2026-06-22T01:08:01.9867930Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9868021Z               "line": 17
2026-06-22T01:08:01.9868103Z             },
2026-06-22T01:08:01.9868197Z             {
2026-06-22T01:08:01.9868317Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9868403Z               "line": 104
2026-06-22T01:08:01.9868498Z             },
2026-06-22T01:08:01.9868583Z             {
2026-06-22T01:08:01.9868707Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9868798Z               "line": 319
2026-06-22T01:08:01.9868883Z             },
2026-06-22T01:08:01.9869040Z             {
2026-06-22T01:08:01.9869146Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9869236Z               "line": 396
2026-06-22T01:08:01.9869321Z             }
2026-06-22T01:08:01.9869409Z           ]
2026-06-22T01:08:01.9869598Z         },
2026-06-22T01:08:01.9869694Z         "int": {
2026-06-22T01:08:01.9869789Z           "complete": true,
2026-06-22T01:08:01.9869875Z           "evidence": [
2026-06-22T01:08:01.9869965Z             {
2026-06-22T01:08:01.9870109Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T01:08:01.9870209Z               "line": 18
2026-06-22T01:08:01.9870295Z             }
2026-06-22T01:08:01.9870381Z           ]
2026-06-22T01:08:01.9870466Z         },
2026-06-22T01:08:01.9870552Z         "unit": {
2026-06-22T01:08:01.9870653Z           "complete": true,
2026-06-22T01:08:01.9870738Z           "evidence": [
2026-06-22T01:08:01.9870913Z             {
2026-06-22T01:08:01.9871023Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9871112Z               "line": 135
2026-06-22T01:08:01.9871202Z             },
2026-06-22T01:08:01.9871288Z             {
2026-06-22T01:08:01.9871408Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9871498Z               "line": 150
2026-06-22T01:08:01.9871579Z             },
2026-06-22T01:08:01.9871660Z             {
2026-06-22T01:08:01.9871779Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9871864Z               "line": 166
2026-06-22T01:08:01.9871951Z             },
2026-06-22T01:08:01.9872032Z             {
2026-06-22T01:08:01.9872160Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T01:08:01.9872252Z               "line": 257
2026-06-22T01:08:01.9872332Z             },
2026-06-22T01:08:01.9872418Z             {
2026-06-22T01:08:01.9872542Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9872623Z               "line": 738
2026-06-22T01:08:01.9872709Z             },
2026-06-22T01:08:01.9872794Z             {
2026-06-22T01:08:01.9872915Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9873014Z               "line": 759
2026-06-22T01:08:01.9873095Z             },
2026-06-22T01:08:01.9873181Z             {
2026-06-22T01:08:01.9873296Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T01:08:01.9873395Z               "line": 726
2026-06-22T01:08:01.9873472Z             }
2026-06-22T01:08:01.9873559Z           ]
2026-06-22T01:08:01.9873653Z         }
2026-06-22T01:08:01.9873733Z       }
2026-06-22T01:08:01.9873823Z     },
2026-06-22T01:08:01.9873899Z     {
2026-06-22T01:08:01.9873993Z       "id": "REQ-TERM-7",
2026-06-22T01:08:01.9875108Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-22T01:08:01.9875200Z       "requiredStages": [
2026-06-22T01:08:01.9875295Z         "impl",
2026-06-22T01:08:01.9875380Z         "unit",
2026-06-22T01:08:01.9875467Z         "int"
2026-06-22T01:08:01.9875553Z       ],
2026-06-22T01:08:01.9875643Z       "stages": {
2026-06-22T01:08:01.9875729Z         "doc": {
2026-06-22T01:08:01.9875815Z           "complete": false,
2026-06-22T01:08:01.9875909Z           "evidence": []
2026-06-22T01:08:01.9875986Z         },
2026-06-22T01:08:01.9876083Z         "impl": {
2026-06-22T01:08:01.9876173Z           "complete": true,
2026-06-22T01:08:01.9876266Z           "evidence": [
2026-06-22T01:08:01.9876347Z             {
2026-06-22T01:08:01.9876466Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9876565Z               "line": 133
2026-06-22T01:08:01.9876650Z             },
2026-06-22T01:08:01.9876741Z             {
2026-06-22T01:08:01.9876857Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9876960Z               "line": 326
2026-06-22T01:08:01.9877051Z             },
2026-06-22T01:08:01.9877218Z             {
2026-06-22T01:08:01.9877331Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:08:01.9877419Z               "line": 15
2026-06-22T01:08:01.9877509Z             },
2026-06-22T01:08:01.9877589Z             {
2026-06-22T01:08:01.9877700Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:08:01.9877794Z               "line": 32
2026-06-22T01:08:01.9881345Z             },
2026-06-22T01:08:01.9881445Z             {
2026-06-22T01:08:01.9881588Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:08:01.9881686Z               "line": 49
2026-06-22T01:08:01.9881771Z             },
2026-06-22T01:08:01.9881996Z             {
2026-06-22T01:08:01.9882139Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9882230Z               "line": 286
2026-06-22T01:08:01.9882315Z             },
2026-06-22T01:08:01.9882401Z             {
2026-06-22T01:08:01.9882526Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9882625Z               "line": 320
2026-06-22T01:08:01.9882711Z             }
2026-06-22T01:08:01.9882812Z           ]
2026-06-22T01:08:01.9882892Z         },
2026-06-22T01:08:01.9882978Z         "int": {
2026-06-22T01:08:01.9883078Z           "complete": true,
2026-06-22T01:08:01.9883160Z           "evidence": [
2026-06-22T01:08:01.9883240Z             {
2026-06-22T01:08:01.9883387Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T01:08:01.9883485Z               "line": 19
2026-06-22T01:08:01.9883560Z             }
2026-06-22T01:08:01.9883651Z           ]
2026-06-22T01:08:01.9883732Z         },
2026-06-22T01:08:01.9883827Z         "unit": {
2026-06-22T01:08:01.9883912Z           "complete": true,
2026-06-22T01:08:01.9884003Z           "evidence": [
2026-06-22T01:08:01.9884090Z             {
2026-06-22T01:08:01.9884208Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9884288Z               "line": 455
2026-06-22T01:08:01.9884379Z             },
2026-06-22T01:08:01.9884464Z             {
2026-06-22T01:08:01.9884572Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T01:08:01.9884662Z               "line": 568
2026-06-22T01:08:01.9884744Z             },
2026-06-22T01:08:01.9884830Z             {
2026-06-22T01:08:01.9884944Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:08:01.9885029Z               "line": 58
2026-06-22T01:08:01.9885112Z             },
2026-06-22T01:08:01.9885193Z             {
2026-06-22T01:08:01.9885301Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:08:01.9885388Z               "line": 77
2026-06-22T01:08:01.9885474Z             },
2026-06-22T01:08:01.9885559Z             {
2026-06-22T01:08:01.9885673Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T01:08:01.9885760Z               "line": 87
2026-06-22T01:08:01.9885845Z             },
2026-06-22T01:08:01.9885930Z             {
2026-06-22T01:08:01.9886046Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T01:08:01.9886136Z               "line": 94
2026-06-22T01:08:01.9886222Z             },
2026-06-22T01:08:01.9886299Z             {
2026-06-22T01:08:01.9886428Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9886522Z               "line": 691
2026-06-22T01:08:01.9886604Z             },
2026-06-22T01:08:01.9886690Z             {
2026-06-22T01:08:01.9886808Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T01:08:01.9886898Z               "line": 716
2026-06-22T01:08:01.9886984Z             }
2026-06-22T01:08:01.9887074Z           ]
2026-06-22T01:08:01.9887162Z         }
2026-06-22T01:08:01.9887253Z       }
2026-06-22T01:08:01.9887344Z     },
2026-06-22T01:08:01.9887431Z     {
2026-06-22T01:08:01.9887524Z       "id": "REQ-UPD-1",
2026-06-22T01:08:01.9887640Z       "title": "Peer-propagated update over P2P",
2026-06-22T01:08:01.9887740Z       "requiredStages": [
2026-06-22T01:08:01.9887825Z         "impl",
2026-06-22T01:08:01.9888022Z         "unit",
2026-06-22T01:08:01.9888098Z         "int"
2026-06-22T01:08:01.9888182Z       ],
2026-06-22T01:08:01.9888265Z       "stages": {
2026-06-22T01:08:01.9888350Z         "doc": {
2026-06-22T01:08:01.9888455Z           "complete": false,
2026-06-22T01:08:01.9888545Z           "evidence": []
2026-06-22T01:08:01.9888637Z         },
2026-06-22T01:08:01.9888732Z         "impl": {
2026-06-22T01:08:01.9888817Z           "complete": true,
2026-06-22T01:08:01.9888918Z           "evidence": [
2026-06-22T01:08:01.9889070Z             {
2026-06-22T01:08:01.9889200Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9889456Z               "line": 28
2026-06-22T01:08:01.9889543Z             },
2026-06-22T01:08:01.9889624Z             {
2026-06-22T01:08:01.9889751Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9889832Z               "line": 103
2026-06-22T01:08:01.9889918Z             },
2026-06-22T01:08:01.9889999Z             {
2026-06-22T01:08:01.9890127Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9890214Z               "line": 342
2026-06-22T01:08:01.9890295Z             },
2026-06-22T01:08:01.9890380Z             {
2026-06-22T01:08:01.9890490Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9890581Z               "line": 22
2026-06-22T01:08:01.9890680Z             },
2026-06-22T01:08:01.9890766Z             {
2026-06-22T01:08:01.9890877Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9890962Z               "line": 207
2026-06-22T01:08:01.9891047Z             },
2026-06-22T01:08:01.9891715Z             {
2026-06-22T01:08:01.9891939Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9892209Z               "line": 283
2026-06-22T01:08:01.9892403Z             },
2026-06-22T01:08:01.9892570Z             {
2026-06-22T01:08:01.9892776Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9893018Z               "line": 340
2026-06-22T01:08:01.9893209Z             },
2026-06-22T01:08:01.9893372Z             {
2026-06-22T01:08:01.9893567Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:01.9893815Z               "line": 37
2026-06-22T01:08:01.9893997Z             }
2026-06-22T01:08:01.9894162Z           ]
2026-06-22T01:08:01.9894331Z         },
2026-06-22T01:08:01.9894482Z         "int": {
2026-06-22T01:08:01.9894660Z           "complete": true,
2026-06-22T01:08:01.9894863Z           "evidence": [
2026-06-22T01:08:01.9895053Z             {
2026-06-22T01:08:01.9895270Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T01:08:01.9895532Z               "line": 207
2026-06-22T01:08:01.9895714Z             },
2026-06-22T01:08:01.9895890Z             {
2026-06-22T01:08:01.9896086Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T01:08:01.9896339Z               "line": 1082
2026-06-22T01:08:01.9896524Z             }
2026-06-22T01:08:01.9896696Z           ]
2026-06-22T01:08:01.9896864Z         },
2026-06-22T01:08:01.9897030Z         "unit": {
2026-06-22T01:08:01.9897212Z           "complete": true,
2026-06-22T01:08:01.9897448Z           "evidence": [
2026-06-22T01:08:01.9897624Z             {
2026-06-22T01:08:01.9897832Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9898084Z               "line": 490
2026-06-22T01:08:01.9898272Z             },
2026-06-22T01:08:01.9898438Z             {
2026-06-22T01:08:01.9898639Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9898882Z               "line": 616
2026-06-22T01:08:01.9899168Z             },
2026-06-22T01:08:01.9899339Z             {
2026-06-22T01:08:01.9899545Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:08:01.9899822Z               "line": 277
2026-06-22T01:08:01.9900011Z             },
2026-06-22T01:08:01.9900179Z             {
2026-06-22T01:08:01.9900377Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:01.9900745Z               "line": 124
2026-06-22T01:08:01.9900930Z             },
2026-06-22T01:08:01.9901084Z             {
2026-06-22T01:08:01.9901278Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:01.9901517Z               "line": 200
2026-06-22T01:08:01.9901695Z             }
2026-06-22T01:08:01.9901851Z           ]
2026-06-22T01:08:01.9902010Z         }
2026-06-22T01:08:01.9902170Z       }
2026-06-22T01:08:01.9902324Z     },
2026-06-22T01:08:01.9902504Z     {
2026-06-22T01:08:01.9902684Z       "id": "REQ-UPD-2",
2026-06-22T01:08:01.9902944Z       "title": "All binaries signature-verified before handoff",
2026-06-22T01:08:01.9903331Z       "requiredStages": [
2026-06-22T01:08:01.9903531Z         "impl",
2026-06-22T01:08:01.9903717Z         "unit"
2026-06-22T01:08:01.9903893Z       ],
2026-06-22T01:08:01.9904046Z       "stages": {
2026-06-22T01:08:01.9904217Z         "doc": {
2026-06-22T01:08:01.9904404Z           "complete": false,
2026-06-22T01:08:01.9904610Z           "evidence": []
2026-06-22T01:08:01.9904813Z         },
2026-06-22T01:08:01.9904976Z         "impl": {
2026-06-22T01:08:01.9905157Z           "complete": true,
2026-06-22T01:08:01.9905361Z           "evidence": [
2026-06-22T01:08:01.9905547Z             {
2026-06-22T01:08:01.9905754Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9906045Z               "line": 343
2026-06-22T01:08:01.9906251Z             },
2026-06-22T01:08:01.9906417Z             {
2026-06-22T01:08:01.9906628Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9906875Z               "line": 476
2026-06-22T01:08:01.9907080Z             },
2026-06-22T01:08:01.9907271Z             {
2026-06-22T01:08:01.9907472Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9907719Z               "line": 29
2026-06-22T01:08:01.9907905Z             },
2026-06-22T01:08:01.9908070Z             {
2026-06-22T01:08:01.9908254Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9908508Z               "line": 271
2026-06-22T01:08:01.9908693Z             },
2026-06-22T01:08:01.9908855Z             {
2026-06-22T01:08:01.9909113Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9909356Z               "line": 288
2026-06-22T01:08:01.9909532Z             },
2026-06-22T01:08:01.9909695Z             {
2026-06-22T01:08:01.9909899Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9910138Z               "line": 408
2026-06-22T01:08:01.9910325Z             },
2026-06-22T01:08:01.9910486Z             {
2026-06-22T01:08:01.9910683Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9910928Z               "line": 558
2026-06-22T01:08:01.9911110Z             },
2026-06-22T01:08:01.9911266Z             {
2026-06-22T01:08:01.9911467Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9911711Z               "line": 155
2026-06-22T01:08:01.9911896Z             }
2026-06-22T01:08:01.9912082Z           ]
2026-06-22T01:08:01.9912230Z         },
2026-06-22T01:08:01.9912396Z         "int": {
2026-06-22T01:08:01.9912584Z           "complete": false,
2026-06-22T01:08:01.9912797Z           "evidence": []
2026-06-22T01:08:01.9912975Z         },
2026-06-22T01:08:01.9913135Z         "unit": {
2026-06-22T01:08:01.9913316Z           "complete": true,
2026-06-22T01:08:01.9913514Z           "evidence": [
2026-06-22T01:08:01.9913691Z             {
2026-06-22T01:08:01.9913901Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9914138Z               "line": 750
2026-06-22T01:08:01.9914335Z             },
2026-06-22T01:08:01.9914492Z             {
2026-06-22T01:08:01.9914692Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9914921Z               "line": 811
2026-06-22T01:08:01.9915107Z             },
2026-06-22T01:08:01.9915264Z             {
2026-06-22T01:08:01.9915447Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9915809Z               "line": 825
2026-06-22T01:08:01.9915988Z             },
2026-06-22T01:08:01.9916145Z             {
2026-06-22T01:08:01.9916333Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9916567Z               "line": 841
2026-06-22T01:08:01.9916754Z             },
2026-06-22T01:08:01.9916924Z             {
2026-06-22T01:08:01.9917135Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9917393Z               "line": 932
2026-06-22T01:08:01.9917592Z             },
2026-06-22T01:08:01.9917746Z             {
2026-06-22T01:08:01.9917964Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9918337Z               "line": 414
2026-06-22T01:08:01.9918531Z             },
2026-06-22T01:08:01.9918721Z             {
2026-06-22T01:08:01.9918933Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9919282Z               "line": 427
2026-06-22T01:08:01.9919477Z             },
2026-06-22T01:08:01.9919650Z             {
2026-06-22T01:08:01.9919858Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:08:01.9920116Z               "line": 410
2026-06-22T01:08:01.9920294Z             }
2026-06-22T01:08:01.9920450Z           ]
2026-06-22T01:08:01.9920609Z         }
2026-06-22T01:08:01.9920765Z       }
2026-06-22T01:08:01.9920928Z     },
2026-06-22T01:08:01.9921089Z     {
2026-06-22T01:08:01.9921266Z       "id": "REQ-UPD-3",
2026-06-22T01:08:01.9921561Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-22T01:08:01.9921880Z       "requiredStages": [
2026-06-22T01:08:01.9922079Z         "impl",
2026-06-22T01:08:01.9922257Z         "unit",
2026-06-22T01:08:01.9922417Z         "int"
2026-06-22T01:08:01.9922576Z       ],
2026-06-22T01:08:01.9922732Z       "stages": {
2026-06-22T01:08:01.9922910Z         "doc": {
2026-06-22T01:08:01.9923086Z           "complete": false,
2026-06-22T01:08:01.9923290Z           "evidence": []
2026-06-22T01:08:01.9923478Z         },
2026-06-22T01:08:01.9923652Z         "impl": {
2026-06-22T01:08:01.9923833Z           "complete": true,
2026-06-22T01:08:01.9924026Z           "evidence": [
2026-06-22T01:08:01.9924204Z             {
2026-06-22T01:08:01.9924403Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9924670Z               "line": 40
2026-06-22T01:08:01.9924856Z             },
2026-06-22T01:08:01.9925028Z             {
2026-06-22T01:08:01.9925233Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9925486Z               "line": 87
2026-06-22T01:08:01.9925672Z             },
2026-06-22T01:08:01.9925843Z             {
2026-06-22T01:08:01.9926040Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:01.9926283Z               "line": 1136
2026-06-22T01:08:01.9926477Z             },
2026-06-22T01:08:01.9926648Z             {
2026-06-22T01:08:01.9926841Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:01.9927085Z               "line": 2128
2026-06-22T01:08:01.9927280Z             },
2026-06-22T01:08:01.9927452Z             {
2026-06-22T01:08:01.9927648Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9927890Z               "line": 26
2026-06-22T01:08:01.9928076Z             },
2026-06-22T01:08:01.9928239Z             {
2026-06-22T01:08:01.9928501Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9928738Z               "line": 114
2026-06-22T01:08:01.9928926Z             },
2026-06-22T01:08:01.9929196Z             {
2026-06-22T01:08:01.9929413Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9929675Z               "line": 246
2026-06-22T01:08:01.9929856Z             },
2026-06-22T01:08:01.9930014Z             {
2026-06-22T01:08:01.9930205Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9930442Z               "line": 2442
2026-06-22T01:08:01.9930629Z             }
2026-06-22T01:08:01.9930920Z           ]
2026-06-22T01:08:01.9931077Z         },
2026-06-22T01:08:01.9931239Z         "int": {
2026-06-22T01:08:01.9931411Z           "complete": true,
2026-06-22T01:08:01.9931610Z           "evidence": [
2026-06-22T01:08:01.9931789Z             {
2026-06-22T01:08:01.9931987Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T01:08:01.9932235Z               "line": 58
2026-06-22T01:08:01.9932421Z             }
2026-06-22T01:08:01.9932587Z           ]
2026-06-22T01:08:01.9932736Z         },
2026-06-22T01:08:01.9932898Z         "unit": {
2026-06-22T01:08:01.9933070Z           "complete": true,
2026-06-22T01:08:01.9933269Z           "evidence": [
2026-06-22T01:08:01.9933570Z             {
2026-06-22T01:08:01.9933770Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9934034Z               "line": 532
2026-06-22T01:08:01.9934231Z             },
2026-06-22T01:08:01.9934403Z             {
2026-06-22T01:08:01.9934591Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9934845Z               "line": 585
2026-06-22T01:08:01.9935031Z             },
2026-06-22T01:08:01.9935206Z             {
2026-06-22T01:08:01.9935403Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9935651Z               "line": 653
2026-06-22T01:08:01.9935840Z             },
2026-06-22T01:08:01.9936013Z             {
2026-06-22T01:08:01.9936213Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T01:08:01.9936461Z               "line": 1102
2026-06-22T01:08:01.9936648Z             },
2026-06-22T01:08:01.9936813Z             {
2026-06-22T01:08:01.9937014Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9937270Z               "line": 271
2026-06-22T01:08:01.9937453Z             },
2026-06-22T01:08:01.9937617Z             {
2026-06-22T01:08:01.9937811Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9938059Z               "line": 295
2026-06-22T01:08:01.9938242Z             },
2026-06-22T01:08:01.9938416Z             {
2026-06-22T01:08:01.9938617Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9938862Z               "line": 316
2026-06-22T01:08:01.9939114Z             },
2026-06-22T01:08:01.9939280Z             {
2026-06-22T01:08:01.9939472Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:01.9939708Z               "line": 332
2026-06-22T01:08:01.9939889Z             }
2026-06-22T01:08:01.9940053Z           ]
2026-06-22T01:08:01.9940217Z         }
2026-06-22T01:08:01.9940392Z       }
2026-06-22T01:08:01.9940556Z     },
2026-06-22T01:08:01.9940732Z     {
2026-06-22T01:08:01.9940908Z       "id": "REQ-UPD-4",
2026-06-22T01:08:01.9941193Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-22T01:08:01.9941503Z       "requiredStages": [
2026-06-22T01:08:01.9941690Z         "impl",
2026-06-22T01:08:01.9941861Z         "unit"
2026-06-22T01:08:01.9942039Z       ],
2026-06-22T01:08:01.9942205Z       "stages": {
2026-06-22T01:08:01.9942382Z         "doc": {
2026-06-22T01:08:01.9942561Z           "complete": false,
2026-06-22T01:08:01.9942767Z           "evidence": []
2026-06-22T01:08:01.9942957Z         },
2026-06-22T01:08:01.9943129Z         "impl": {
2026-06-22T01:08:01.9943306Z           "complete": true,
2026-06-22T01:08:01.9943500Z           "evidence": [
2026-06-22T01:08:01.9943691Z             {
2026-06-22T01:08:01.9943891Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9944269Z               "line": 41
2026-06-22T01:08:01.9944449Z             },
2026-06-22T01:08:01.9944613Z             {
2026-06-22T01:08:01.9949746Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9950042Z               "line": 88
2026-06-22T01:08:01.9950235Z             },
2026-06-22T01:08:01.9950411Z             {
2026-06-22T01:08:01.9950638Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:08:01.9950895Z               "line": 23
2026-06-22T01:08:01.9951262Z             },
2026-06-22T01:08:01.9951430Z             {
2026-06-22T01:08:01.9951635Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:08:01.9951878Z               "line": 56
2026-06-22T01:08:01.9952063Z             },
2026-06-22T01:08:01.9952226Z             {
2026-06-22T01:08:01.9952426Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:08:01.9952665Z               "line": 77
2026-06-22T01:08:01.9952832Z             },
2026-06-22T01:08:01.9952994Z             {
2026-06-22T01:08:01.9953202Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T01:08:01.9953455Z               "line": 236
2026-06-22T01:08:01.9953765Z             },
2026-06-22T01:08:01.9953932Z             {
2026-06-22T01:08:01.9954132Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T01:08:01.9954379Z               "line": 108
2026-06-22T01:08:01.9954567Z             },
2026-06-22T01:08:01.9954733Z             {
2026-06-22T01:08:01.9954928Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.9955164Z               "line": 270
2026-06-22T01:08:01.9955352Z             },
2026-06-22T01:08:01.9955514Z             {
2026-06-22T01:08:01.9955706Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9955950Z               "line": 2441
2026-06-22T01:08:01.9956142Z             }
2026-06-22T01:08:01.9956317Z           ]
2026-06-22T01:08:01.9956480Z         },
2026-06-22T01:08:01.9956641Z         "int": {
2026-06-22T01:08:01.9956823Z           "complete": false,
2026-06-22T01:08:01.9957033Z           "evidence": []
2026-06-22T01:08:01.9957219Z         },
2026-06-22T01:08:01.9957387Z         "unit": {
2026-06-22T01:08:01.9957567Z           "complete": true,
2026-06-22T01:08:01.9957758Z           "evidence": [
2026-06-22T01:08:01.9957948Z             {
2026-06-22T01:08:01.9958148Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9958400Z               "line": 581
2026-06-22T01:08:01.9958578Z             },
2026-06-22T01:08:01.9958747Z             {
2026-06-22T01:08:01.9959047Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9959290Z               "line": 706
2026-06-22T01:08:01.9959475Z             },
2026-06-22T01:08:01.9959648Z             {
2026-06-22T01:08:01.9959838Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T01:08:01.9960086Z               "line": 384
2026-06-22T01:08:01.9960259Z             },
2026-06-22T01:08:01.9960419Z             {
2026-06-22T01:08:01.9960621Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:08:01.9960881Z               "line": 102
2026-06-22T01:08:01.9961070Z             },
2026-06-22T01:08:01.9961232Z             {
2026-06-22T01:08:01.9961431Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:08:01.9961676Z               "line": 123
2026-06-22T01:08:01.9961847Z             },
2026-06-22T01:08:01.9962009Z             {
2026-06-22T01:08:01.9962200Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T01:08:01.9962457Z               "line": 142
2026-06-22T01:08:01.9962638Z             },
2026-06-22T01:08:01.9962796Z             {
2026-06-22T01:08:01.9962986Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T01:08:01.9963230Z               "line": 582
2026-06-22T01:08:01.9963416Z             },
2026-06-22T01:08:01.9963564Z             {
2026-06-22T01:08:01.9963753Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T01:08:01.9964000Z               "line": 566
2026-06-22T01:08:01.9964182Z             },
2026-06-22T01:08:01.9964344Z             {
2026-06-22T01:08:01.9964530Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:01.9964774Z               "line": 8256
2026-06-22T01:08:01.9964954Z             }
2026-06-22T01:08:01.9965122Z           ]
2026-06-22T01:08:01.9965278Z         }
2026-06-22T01:08:01.9965447Z       }
2026-06-22T01:08:01.9965603Z     },
2026-06-22T01:08:01.9965762Z     {
2026-06-22T01:08:01.9966036Z       "id": "REQ-UPD-5",
2026-06-22T01:08:01.9966295Z       "title": "spt-core ripple-updates registered adapters",
2026-06-22T01:08:01.9966572Z       "requiredStages": [
2026-06-22T01:08:01.9966763Z         "impl",
2026-06-22T01:08:01.9966934Z         "unit"
2026-06-22T01:08:01.9967107Z       ],
2026-06-22T01:08:01.9967269Z       "stages": {
2026-06-22T01:08:01.9967455Z         "doc": {
2026-06-22T01:08:01.9967617Z           "complete": false,
2026-06-22T01:08:01.9967831Z           "evidence": []
2026-06-22T01:08:01.9968008Z         },
2026-06-22T01:08:01.9968170Z         "impl": {
2026-06-22T01:08:01.9968351Z           "complete": true,
2026-06-22T01:08:01.9968643Z           "evidence": [
2026-06-22T01:08:01.9968821Z             {
2026-06-22T01:08:01.9969106Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9969377Z               "line": 27
2026-06-22T01:08:01.9969560Z             },
2026-06-22T01:08:01.9969725Z             {
2026-06-22T01:08:01.9969917Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9970194Z               "line": 87
2026-06-22T01:08:01.9970374Z             },
2026-06-22T01:08:01.9970547Z             {
2026-06-22T01:08:01.9970750Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9971013Z               "line": 145
2026-06-22T01:08:01.9971200Z             },
2026-06-22T01:08:01.9971355Z             {
2026-06-22T01:08:01.9971555Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9971802Z               "line": 492
2026-06-22T01:08:01.9971996Z             },
2026-06-22T01:08:01.9972160Z             {
2026-06-22T01:08:01.9972359Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:01.9972607Z               "line": 546
2026-06-22T01:08:01.9972789Z             }
2026-06-22T01:08:01.9972950Z           ]
2026-06-22T01:08:01.9973113Z         },
2026-06-22T01:08:01.9973270Z         "int": {
2026-06-22T01:08:01.9973447Z           "complete": false,
2026-06-22T01:08:01.9973642Z           "evidence": []
2026-06-22T01:08:01.9973827Z         },
2026-06-22T01:08:01.9973991Z         "unit": {
2026-06-22T01:08:01.9974180Z           "complete": true,
2026-06-22T01:08:01.9974375Z           "evidence": [
2026-06-22T01:08:01.9974551Z             {
2026-06-22T01:08:01.9974757Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9975000Z               "line": 272
2026-06-22T01:08:01.9975185Z             },
2026-06-22T01:08:01.9975353Z             {
2026-06-22T01:08:01.9975548Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9975806Z               "line": 286
2026-06-22T01:08:01.9975983Z             },
2026-06-22T01:08:01.9976149Z             {
2026-06-22T01:08:01.9976360Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9976610Z               "line": 300
2026-06-22T01:08:01.9976794Z             },
2026-06-22T01:08:01.9976962Z             {
2026-06-22T01:08:01.9977165Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9977423Z               "line": 314
2026-06-22T01:08:01.9977610Z             },
2026-06-22T01:08:01.9977776Z             {
2026-06-22T01:08:01.9977981Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:01.9978240Z               "line": 348
2026-06-22T01:08:01.9978425Z             },
2026-06-22T01:08:01.9978583Z             {
2026-06-22T01:08:01.9978798Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:01.9979141Z               "line": 1071
2026-06-22T01:08:01.9979335Z             }
2026-06-22T01:08:01.9979501Z           ]
2026-06-22T01:08:01.9979666Z         }
2026-06-22T01:08:01.9979819Z       }
2026-06-22T01:08:01.9979971Z     },
2026-06-22T01:08:01.9980125Z     {
2026-06-22T01:08:01.9980295Z       "id": "REQ-UPD-6",
2026-06-22T01:08:01.9981206Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-22T01:08:01.9982284Z       "requiredStages": [
2026-06-22T01:08:01.9982481Z         "doc",
2026-06-22T01:08:01.9982662Z         "impl",
2026-06-22T01:08:01.9982829Z         "unit",
2026-06-22T01:08:01.9982992Z         "int"
2026-06-22T01:08:01.9983153Z       ],
2026-06-22T01:08:01.9983311Z       "stages": {
2026-06-22T01:08:01.9983491Z         "doc": {
2026-06-22T01:08:01.9983678Z           "complete": true,
2026-06-22T01:08:01.9983882Z           "evidence": [
2026-06-22T01:08:01.9984169Z             {
2026-06-22T01:08:01.9984378Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T01:08:01.9984632Z               "line": 3
2026-06-22T01:08:01.9984801Z             },
2026-06-22T01:08:01.9984970Z             {
2026-06-22T01:08:01.9985149Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-22T01:08:01.9985398Z               "line": 3
2026-06-22T01:08:01.9985575Z             },
2026-06-22T01:08:01.9985736Z             {
2026-06-22T01:08:01.9985961Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-22T01:08:01.9986252Z               "line": 3
2026-06-22T01:08:01.9986422Z             }
2026-06-22T01:08:01.9986591Z           ]
2026-06-22T01:08:01.9986752Z         },
2026-06-22T01:08:01.9986920Z         "impl": {
2026-06-22T01:08:01.9987103Z           "complete": true,
2026-06-22T01:08:01.9987302Z           "evidence": [
2026-06-22T01:08:01.9987497Z             {
2026-06-22T01:08:01.9987692Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9987951Z               "line": 76
2026-06-22T01:08:01.9988132Z             },
2026-06-22T01:08:01.9988293Z             {
2026-06-22T01:08:01.9988490Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:01.9988738Z               "line": 212
2026-06-22T01:08:01.9988928Z             },
2026-06-22T01:08:01.9989166Z             {
2026-06-22T01:08:01.9989368Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9989619Z               "line": 69
2026-06-22T01:08:01.9989810Z             },
2026-06-22T01:08:01.9989975Z             {
2026-06-22T01:08:01.9990169Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9990422Z               "line": 133
2026-06-22T01:08:01.9990607Z             },
2026-06-22T01:08:01.9990765Z             {
2026-06-22T01:08:01.9990966Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9991222Z               "line": 243
2026-06-22T01:08:01.9991418Z             },
2026-06-22T01:08:01.9991575Z             {
2026-06-22T01:08:01.9991775Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9992029Z               "line": 406
2026-06-22T01:08:01.9992215Z             },
2026-06-22T01:08:01.9992386Z             {
2026-06-22T01:08:01.9992585Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9992826Z               "line": 534
2026-06-22T01:08:01.9993018Z             },
2026-06-22T01:08:01.9993184Z             {
2026-06-22T01:08:01.9993384Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9993637Z               "line": 548
2026-06-22T01:08:01.9993823Z             },
2026-06-22T01:08:01.9993975Z             {
2026-06-22T01:08:01.9994162Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9994414Z               "line": 603
2026-06-22T01:08:01.9994590Z             },
2026-06-22T01:08:01.9994748Z             {
2026-06-22T01:08:01.9994947Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:01.9995192Z               "line": 634
2026-06-22T01:08:01.9995371Z             },
2026-06-22T01:08:01.9995539Z             {
2026-06-22T01:08:01.9995743Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T01:08:01.9995996Z               "line": 137
2026-06-22T01:08:01.9996291Z             },
2026-06-22T01:08:01.9996450Z             {
2026-06-22T01:08:01.9996658Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T01:08:01.9996912Z               "line": 184
2026-06-22T01:08:01.9997103Z             },
2026-06-22T01:08:01.9997269Z             {
2026-06-22T01:08:01.9997465Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9997721Z               "line": 78
2026-06-22T01:08:01.9997904Z             },
2026-06-22T01:08:01.9998067Z             {
2026-06-22T01:08:01.9998267Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9998520Z               "line": 114
2026-06-22T01:08:01.9998716Z             },
2026-06-22T01:08:01.9998797Z             {
2026-06-22T01:08:01.9998925Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9999092Z               "line": 185
2026-06-22T01:08:01.9999178Z             },
2026-06-22T01:08:01.9999264Z             {
2026-06-22T01:08:01.9999388Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9999469Z               "line": 260
2026-06-22T01:08:01.9999564Z             },
2026-06-22T01:08:01.9999646Z             {
2026-06-22T01:08:01.9999764Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:01.9999845Z               "line": 292
2026-06-22T01:08:01.9999938Z             },
2026-06-22T01:08:02.0000018Z             {
2026-06-22T01:08:02.0000146Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0000237Z               "line": 323
2026-06-22T01:08:02.0000319Z             },
2026-06-22T01:08:02.0000408Z             {
2026-06-22T01:08:02.0000531Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0000626Z               "line": 346
2026-06-22T01:08:02.0000701Z             },
2026-06-22T01:08:02.0000795Z             {
2026-06-22T01:08:02.0000910Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0000992Z               "line": 388
2026-06-22T01:08:02.0001073Z             },
2026-06-22T01:08:02.0001158Z             {
2026-06-22T01:08:02.0001278Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0001364Z               "line": 398
2026-06-22T01:08:02.0001453Z             },
2026-06-22T01:08:02.0001540Z             {
2026-06-22T01:08:02.0001645Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0001735Z               "line": 410
2026-06-22T01:08:02.0001821Z             },
2026-06-22T01:08:02.0001908Z             {
2026-06-22T01:08:02.0002031Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0002117Z               "line": 420
2026-06-22T01:08:02.0002203Z             },
2026-06-22T01:08:02.0002288Z             {
2026-06-22T01:08:02.0002397Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0002480Z               "line": 439
2026-06-22T01:08:02.0002571Z             },
2026-06-22T01:08:02.0002655Z             {
2026-06-22T01:08:02.0002770Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0002857Z               "line": 449
2026-06-22T01:08:02.0002928Z             },
2026-06-22T01:08:02.0003017Z             {
2026-06-22T01:08:02.0003136Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0003217Z               "line": 94
2026-06-22T01:08:02.0003300Z             },
2026-06-22T01:08:02.0003386Z             {
2026-06-22T01:08:02.0003511Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0003606Z               "line": 120
2026-06-22T01:08:02.0003686Z             },
2026-06-22T01:08:02.0003758Z             {
2026-06-22T01:08:02.0003878Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0003972Z               "line": 135
2026-06-22T01:08:02.0004053Z             },
2026-06-22T01:08:02.0004136Z             {
2026-06-22T01:08:02.0004245Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0004470Z               "line": 162
2026-06-22T01:08:02.0004554Z             },
2026-06-22T01:08:02.0004635Z             {
2026-06-22T01:08:02.0004761Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0004845Z               "line": 174
2026-06-22T01:08:02.0004936Z             },
2026-06-22T01:08:02.0005012Z             {
2026-06-22T01:08:02.0005128Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0005217Z               "line": 185
2026-06-22T01:08:02.0005294Z             },
2026-06-22T01:08:02.0005385Z             {
2026-06-22T01:08:02.0005498Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0005686Z               "line": 451
2026-06-22T01:08:02.0005772Z             },
2026-06-22T01:08:02.0005860Z             {
2026-06-22T01:08:02.0005974Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0006061Z               "line": 573
2026-06-22T01:08:02.0006147Z             },
2026-06-22T01:08:02.0006232Z             {
2026-06-22T01:08:02.0006347Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:02.0006433Z               "line": 171
2026-06-22T01:08:02.0006518Z             },
2026-06-22T01:08:02.0006603Z             {
2026-06-22T01:08:02.0006714Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:02.0006814Z               "line": 65
2026-06-22T01:08:02.0006899Z             },
2026-06-22T01:08:02.0006986Z             {
2026-06-22T01:08:02.0007100Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:02.0007195Z               "line": 71
2026-06-22T01:08:02.0007286Z             },
2026-06-22T01:08:02.0007372Z             {
2026-06-22T01:08:02.0007491Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T01:08:02.0007577Z               "line": 77
2026-06-22T01:08:02.0007654Z             },
2026-06-22T01:08:02.0007729Z             {
2026-06-22T01:08:02.0007848Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0007945Z               "line": 778
2026-06-22T01:08:02.0008020Z             },
2026-06-22T01:08:02.0008110Z             {
2026-06-22T01:08:02.0008219Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0008305Z               "line": 795
2026-06-22T01:08:02.0008389Z             },
2026-06-22T01:08:02.0008474Z             {
2026-06-22T01:08:02.0008579Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0008666Z               "line": 838
2026-06-22T01:08:02.0008756Z             },
2026-06-22T01:08:02.0008841Z             {
2026-06-22T01:08:02.0009014Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0009099Z               "line": 981
2026-06-22T01:08:02.0009194Z             },
2026-06-22T01:08:02.0009281Z             {
2026-06-22T01:08:02.0009385Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0009485Z               "line": 1131
2026-06-22T01:08:02.0009567Z             }
2026-06-22T01:08:02.0009653Z           ]
2026-06-22T01:08:02.0009738Z         },
2026-06-22T01:08:02.0009829Z         "int": {
2026-06-22T01:08:02.0009915Z           "complete": true,
2026-06-22T01:08:02.0010005Z           "evidence": [
2026-06-22T01:08:02.0010095Z             {
2026-06-22T01:08:02.0010225Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:08:02.0010310Z               "line": 569
2026-06-22T01:08:02.0010396Z             },
2026-06-22T01:08:02.0010478Z             {
2026-06-22T01:08:02.0010601Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T01:08:02.0010687Z               "line": 135
2026-06-22T01:08:02.0010769Z             }
2026-06-22T01:08:02.0010846Z           ]
2026-06-22T01:08:02.0010930Z         },
2026-06-22T01:08:02.0011010Z         "unit": {
2026-06-22T01:08:02.0011096Z           "complete": true,
2026-06-22T01:08:02.0011181Z           "evidence": [
2026-06-22T01:08:02.0011266Z             {
2026-06-22T01:08:02.0011394Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:02.0011581Z               "line": 626
2026-06-22T01:08:02.0011728Z             },
2026-06-22T01:08:02.0011800Z             {
2026-06-22T01:08:02.0011929Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:02.0012023Z               "line": 675
2026-06-22T01:08:02.0012101Z             },
2026-06-22T01:08:02.0012186Z             {
2026-06-22T01:08:02.0012300Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T01:08:02.0012390Z               "line": 696
2026-06-22T01:08:02.0012477Z             },
2026-06-22T01:08:02.0012553Z             {
2026-06-22T01:08:02.0012672Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0012858Z               "line": 513
2026-06-22T01:08:02.0012949Z             },
2026-06-22T01:08:02.0013030Z             {
2026-06-22T01:08:02.0013154Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0013249Z               "line": 638
2026-06-22T01:08:02.0013326Z             },
2026-06-22T01:08:02.0013412Z             {
2026-06-22T01:08:02.0013521Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0013615Z               "line": 675
2026-06-22T01:08:02.0013701Z             },
2026-06-22T01:08:02.0013782Z             {
2026-06-22T01:08:02.0013903Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0013989Z               "line": 947
2026-06-22T01:08:02.0014076Z             },
2026-06-22T01:08:02.0014153Z             {
2026-06-22T01:08:02.0014261Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0014347Z               "line": 969
2026-06-22T01:08:02.0014438Z             },
2026-06-22T01:08:02.0014523Z             {
2026-06-22T01:08:02.0014643Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0014734Z               "line": 986
2026-06-22T01:08:02.0014820Z             },
2026-06-22T01:08:02.0014895Z             {
2026-06-22T01:08:02.0015011Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0015110Z               "line": 1001
2026-06-22T01:08:02.0015186Z             },
2026-06-22T01:08:02.0015267Z             {
2026-06-22T01:08:02.0015378Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0015463Z               "line": 1027
2026-06-22T01:08:02.0015549Z             },
2026-06-22T01:08:02.0015631Z             {
2026-06-22T01:08:02.0015753Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T01:08:02.0019912Z               "line": 457
2026-06-22T01:08:02.0020031Z             },
2026-06-22T01:08:02.0020123Z             {
2026-06-22T01:08:02.0020274Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T01:08:02.0020379Z               "line": 338
2026-06-22T01:08:02.0020466Z             },
2026-06-22T01:08:02.0020551Z             {
2026-06-22T01:08:02.0020670Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0020762Z               "line": 10549
2026-06-22T01:08:02.0020846Z             },
2026-06-22T01:08:02.0020933Z             {
2026-06-22T01:08:02.0021048Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0021138Z               "line": 1260
2026-06-22T01:08:02.0021223Z             },
2026-06-22T01:08:02.0021304Z             {
2026-06-22T01:08:02.0021425Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T01:08:02.0021617Z               "line": 130
2026-06-22T01:08:02.0021699Z             }
2026-06-22T01:08:02.0021775Z           ]
2026-06-22T01:08:02.0021854Z         }
2026-06-22T01:08:02.0021934Z       }
2026-06-22T01:08:02.0022021Z     },
2026-06-22T01:08:02.0022098Z     {
2026-06-22T01:08:02.0022193Z       "id": "REQ-UPD-7",
2026-06-22T01:08:02.0024365Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-22T01:08:02.0024621Z       "requiredStages": [
2026-06-22T01:08:02.0024717Z         "impl",
2026-06-22T01:08:02.0024797Z         "unit"
2026-06-22T01:08:02.0024873Z       ],
2026-06-22T01:08:02.0025051Z       "stages": {
2026-06-22T01:08:02.0025140Z         "doc": {
2026-06-22T01:08:02.0025242Z           "complete": false,
2026-06-22T01:08:02.0025427Z           "evidence": []
2026-06-22T01:08:02.0025508Z         },
2026-06-22T01:08:02.0025595Z         "impl": {
2026-06-22T01:08:02.0025689Z           "complete": true,
2026-06-22T01:08:02.0025779Z           "evidence": [
2026-06-22T01:08:02.0025862Z             {
2026-06-22T01:08:02.0025980Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0026061Z               "line": 2626
2026-06-22T01:08:02.0026147Z             }
2026-06-22T01:08:02.0026229Z           ]
2026-06-22T01:08:02.0026318Z         },
2026-06-22T01:08:02.0026404Z         "int": {
2026-06-22T01:08:02.0026501Z           "complete": false,
2026-06-22T01:08:02.0026596Z           "evidence": []
2026-06-22T01:08:02.0026681Z         },
2026-06-22T01:08:02.0026768Z         "unit": {
2026-06-22T01:08:02.0026859Z           "complete": true,
2026-06-22T01:08:02.0026953Z           "evidence": [
2026-06-22T01:08:02.0027033Z             {
2026-06-22T01:08:02.0027143Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0027239Z               "line": 10525
2026-06-22T01:08:02.0027319Z             }
2026-06-22T01:08:02.0027395Z           ]
2026-06-22T01:08:02.0027472Z         }
2026-06-22T01:08:02.0027557Z       }
2026-06-22T01:08:02.0027634Z     },
2026-06-22T01:08:02.0027710Z     {
2026-06-22T01:08:02.0027811Z       "id": "REQ-UPD-8",
2026-06-22T01:08:02.0030368Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-22T01:08:02.0030487Z       "requiredStages": [
2026-06-22T01:08:02.0030577Z         "impl",
2026-06-22T01:08:02.0030669Z         "unit"
2026-06-22T01:08:02.0030754Z       ],
2026-06-22T01:08:02.0030839Z       "stages": {
2026-06-22T01:08:02.0030920Z         "doc": {
2026-06-22T01:08:02.0031012Z           "complete": false,
2026-06-22T01:08:02.0031097Z           "evidence": []
2026-06-22T01:08:02.0031182Z         },
2026-06-22T01:08:02.0031264Z         "impl": {
2026-06-22T01:08:02.0031365Z           "complete": true,
2026-06-22T01:08:02.0031449Z           "evidence": [
2026-06-22T01:08:02.0031535Z             {
2026-06-22T01:08:02.0031670Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:02.0031754Z               "line": 77
2026-06-22T01:08:02.0031836Z             },
2026-06-22T01:08:02.0031923Z             {
2026-06-22T01:08:02.0032050Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0032140Z               "line": 49
2026-06-22T01:08:02.0032221Z             },
2026-06-22T01:08:02.0032312Z             {
2026-06-22T01:08:02.0032424Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0032615Z               "line": 152
2026-06-22T01:08:02.0032696Z             },
2026-06-22T01:08:02.0032781Z             {
2026-06-22T01:08:02.0032896Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0032982Z               "line": 215
2026-06-22T01:08:02.0033077Z             },
2026-06-22T01:08:02.0033157Z             {
2026-06-22T01:08:02.0033273Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0033345Z               "line": 230
2026-06-22T01:08:02.0033425Z             },
2026-06-22T01:08:02.0033507Z             {
2026-06-22T01:08:02.0033612Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0033806Z               "line": 247
2026-06-22T01:08:02.0033894Z             },
2026-06-22T01:08:02.0033978Z             {
2026-06-22T01:08:02.0034083Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0034170Z               "line": 269
2026-06-22T01:08:02.0034256Z             },
2026-06-22T01:08:02.0034340Z             {
2026-06-22T01:08:02.0034461Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0034547Z               "line": 66
2026-06-22T01:08:02.0034627Z             },
2026-06-22T01:08:02.0034706Z             {
2026-06-22T01:08:02.0034816Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0034897Z               "line": 154
2026-06-22T01:08:02.0034981Z             },
2026-06-22T01:08:02.0035057Z             {
2026-06-22T01:08:02.0035158Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0035249Z               "line": 2430
2026-06-22T01:08:02.0035329Z             },
2026-06-22T01:08:02.0035410Z             {
2026-06-22T01:08:02.0035516Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0035597Z               "line": 2493
2026-06-22T01:08:02.0035677Z             },
2026-06-22T01:08:02.0035749Z             {
2026-06-22T01:08:02.0035854Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0035954Z               "line": 2503
2026-06-22T01:08:02.0036034Z             },
2026-06-22T01:08:02.0036117Z             {
2026-06-22T01:08:02.0036216Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0036311Z               "line": 2510
2026-06-22T01:08:02.0036392Z             },
2026-06-22T01:08:02.0036479Z             {
2026-06-22T01:08:02.0036579Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0036669Z               "line": 2627
2026-06-22T01:08:02.0036761Z             },
2026-06-22T01:08:02.0036841Z             {
2026-06-22T01:08:02.0036955Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0037037Z               "line": 480
2026-06-22T01:08:02.0037123Z             },
2026-06-22T01:08:02.0037203Z             {
2026-06-22T01:08:02.0037308Z               "path": "crates/xtask/src/main.rs",
2026-06-22T01:08:02.0037400Z               "line": 494
2026-06-22T01:08:02.0037480Z             }
2026-06-22T01:08:02.0037564Z           ]
2026-06-22T01:08:02.0037655Z         },
2026-06-22T01:08:02.0037741Z         "int": {
2026-06-22T01:08:02.0037842Z           "complete": false,
2026-06-22T01:08:02.0037931Z           "evidence": []
2026-06-22T01:08:02.0038018Z         },
2026-06-22T01:08:02.0038104Z         "unit": {
2026-06-22T01:08:02.0038199Z           "complete": true,
2026-06-22T01:08:02.0038279Z           "evidence": [
2026-06-22T01:08:02.0038366Z             {
2026-06-22T01:08:02.0038490Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T01:08:02.0038579Z               "line": 476
2026-06-22T01:08:02.0038662Z             },
2026-06-22T01:08:02.0038743Z             {
2026-06-22T01:08:02.0038870Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T01:08:02.0039029Z               "line": 580
2026-06-22T01:08:02.0039114Z             },
2026-06-22T01:08:02.0039190Z             {
2026-06-22T01:08:02.0039292Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0039387Z               "line": 10527
2026-06-22T01:08:02.0039596Z             },
2026-06-22T01:08:02.0039678Z             {
2026-06-22T01:08:02.0039786Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0039871Z               "line": 10549
2026-06-22T01:08:02.0039952Z             }
2026-06-22T01:08:02.0040033Z           ]
2026-06-22T01:08:02.0040112Z         }
2026-06-22T01:08:02.0040197Z       }
2026-06-22T01:08:02.0040274Z     },
2026-06-22T01:08:02.0040361Z     {
2026-06-22T01:08:02.0040455Z       "id": "REQ-UPD-9",
2026-06-22T01:08:02.0043008Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-22T01:08:02.0043223Z       "requiredStages": [
2026-06-22T01:08:02.0043313Z         "doc",
2026-06-22T01:08:02.0043398Z         "impl",
2026-06-22T01:08:02.0043486Z         "unit"
2026-06-22T01:08:02.0043571Z       ],
2026-06-22T01:08:02.0043656Z       "stages": {
2026-06-22T01:08:02.0043742Z         "doc": {
2026-06-22T01:08:02.0043829Z           "complete": true,
2026-06-22T01:08:02.0043928Z           "evidence": [
2026-06-22T01:08:02.0044014Z             {
2026-06-22T01:08:02.0044110Z               "path": "CONTEXT.md",
2026-06-22T01:08:02.0044295Z               "line": 93
2026-06-22T01:08:02.0044396Z             },
2026-06-22T01:08:02.0044482Z             {
2026-06-22T01:08:02.0044567Z               "path": "docs/MANIFEST.md",
2026-06-22T01:08:02.0044658Z               "line": 285
2026-06-22T01:08:02.0044745Z             }
2026-06-22T01:08:02.0044816Z           ]
2026-06-22T01:08:02.0044896Z         },
2026-06-22T01:08:02.0044982Z         "impl": {
2026-06-22T01:08:02.0045074Z           "complete": true,
2026-06-22T01:08:02.0045163Z           "evidence": [
2026-06-22T01:08:02.0045248Z             {
2026-06-22T01:08:02.0045396Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:02.0045480Z               "line": 128
2026-06-22T01:08:02.0045570Z             },
2026-06-22T01:08:02.0045650Z             {
2026-06-22T01:08:02.0045766Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0045847Z               "line": 533
2026-06-22T01:08:02.0045936Z             },
2026-06-22T01:08:02.0046018Z             {
2026-06-22T01:08:02.0046142Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:02.0046237Z               "line": 459
2026-06-22T01:08:02.0046323Z             },
2026-06-22T01:08:02.0046409Z             {
2026-06-22T01:08:02.0046523Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:02.0046619Z               "line": 505
2026-06-22T01:08:02.0046701Z             },
2026-06-22T01:08:02.0046781Z             {
2026-06-22T01:08:02.0046895Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:02.0046987Z               "line": 928
2026-06-22T01:08:02.0047067Z             },
2026-06-22T01:08:02.0047153Z             {
2026-06-22T01:08:02.0047277Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T01:08:02.0047544Z               "line": 302
2026-06-22T01:08:02.0047626Z             },
2026-06-22T01:08:02.0047706Z             {
2026-06-22T01:08:02.0047806Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0047893Z               "line": 5675
2026-06-22T01:08:02.0048125Z             },
2026-06-22T01:08:02.0048205Z             {
2026-06-22T01:08:02.0048326Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0048416Z               "line": 5720
2026-06-22T01:08:02.0048496Z             },
2026-06-22T01:08:02.0048578Z             {
2026-06-22T01:08:02.0048683Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0048768Z               "line": 5857
2026-06-22T01:08:02.0048859Z             },
2026-06-22T01:08:02.0049031Z             {
2026-06-22T01:08:02.0049125Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0049212Z               "line": 5878
2026-06-22T01:08:02.0049298Z             },
2026-06-22T01:08:02.0049493Z             {
2026-06-22T01:08:02.0049594Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0049674Z               "line": 5901
2026-06-22T01:08:02.0049760Z             },
2026-06-22T01:08:02.0049842Z             {
2026-06-22T01:08:02.0049942Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0050031Z               "line": 5928
2026-06-22T01:08:02.0050118Z             }
2026-06-22T01:08:02.0050205Z           ]
2026-06-22T01:08:02.0050294Z         },
2026-06-22T01:08:02.0050379Z         "int": {
2026-06-22T01:08:02.0050474Z           "complete": false,
2026-06-22T01:08:02.0050570Z           "evidence": []
2026-06-22T01:08:02.0050654Z         },
2026-06-22T01:08:02.0050743Z         "unit": {
2026-06-22T01:08:02.0050839Z           "complete": true,
2026-06-22T01:08:02.0050931Z           "evidence": [
2026-06-22T01:08:02.0051010Z             {
2026-06-22T01:08:02.0051140Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T01:08:02.0051230Z               "line": 259
2026-06-22T01:08:02.0051312Z             },
2026-06-22T01:08:02.0051401Z             {
2026-06-22T01:08:02.0051522Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T01:08:02.0051617Z               "line": 657
2026-06-22T01:08:02.0051702Z             },
2026-06-22T01:08:02.0051779Z             {
2026-06-22T01:08:02.0051902Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T01:08:02.0051988Z               "line": 1107
2026-06-22T01:08:02.0052064Z             },
2026-06-22T01:08:02.0052142Z             {
2026-06-22T01:08:02.0052241Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0052326Z               "line": 7565
2026-06-22T01:08:02.0052409Z             }
2026-06-22T01:08:02.0052490Z           ]
2026-06-22T01:08:02.0052564Z         }
2026-06-22T01:08:02.0052641Z       }
2026-06-22T01:08:02.0052719Z     },
2026-06-22T01:08:02.0052805Z     {
2026-06-22T01:08:02.0052928Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-22T01:08:02.0058148Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-22T01:08:02.0058385Z       "requiredStages": [
2026-06-22T01:08:02.0058477Z         "doc",
2026-06-22T01:08:02.0058558Z         "impl",
2026-06-22T01:08:02.0058647Z         "unit"
2026-06-22T01:08:02.0058803Z       ],
2026-06-22T01:08:02.0058891Z       "stages": {
2026-06-22T01:08:02.0059033Z         "doc": {
2026-06-22T01:08:02.0059128Z           "complete": true,
2026-06-22T01:08:02.0059210Z           "evidence": [
2026-06-22T01:08:02.0059295Z             {
2026-06-22T01:08:02.0059399Z               "path": "CONTEXT.md",
2026-06-22T01:08:02.0059491Z               "line": 342
2026-06-22T01:08:02.0059582Z             }
2026-06-22T01:08:02.0059657Z           ]
2026-06-22T01:08:02.0059744Z         },
2026-06-22T01:08:02.0059830Z         "impl": {
2026-06-22T01:08:02.0059915Z           "complete": true,
2026-06-22T01:08:02.0060001Z           "evidence": [
2026-06-22T01:08:02.0060077Z             {
2026-06-22T01:08:02.0060201Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T01:08:02.0060287Z               "line": 432
2026-06-22T01:08:02.0060373Z             },
2026-06-22T01:08:02.0060450Z             {
2026-06-22T01:08:02.0060563Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:02.0060649Z               "line": 683
2026-06-22T01:08:02.0060736Z             },
2026-06-22T01:08:02.0060821Z             {
2026-06-22T01:08:02.0060929Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:02.0061020Z               "line": 859
2026-06-22T01:08:02.0061101Z             },
2026-06-22T01:08:02.0061181Z             {
2026-06-22T01:08:02.0061299Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:02.0061385Z               "line": 794
2026-06-22T01:08:02.0061471Z             },
2026-06-22T01:08:02.0061552Z             {
2026-06-22T01:08:02.0061657Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:02.0061753Z               "line": 788
2026-06-22T01:08:02.0061834Z             }
2026-06-22T01:08:02.0061914Z           ]
2026-06-22T01:08:02.0062000Z         },
2026-06-22T01:08:02.0062077Z         "int": {
2026-06-22T01:08:02.0062177Z           "complete": false,
2026-06-22T01:08:02.0062257Z           "evidence": []
2026-06-22T01:08:02.0062349Z         },
2026-06-22T01:08:02.0062430Z         "unit": {
2026-06-22T01:08:02.0062525Z           "complete": true,
2026-06-22T01:08:02.0062615Z           "evidence": [
2026-06-22T01:08:02.0062692Z             {
2026-06-22T01:08:02.0062801Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:02.0062886Z               "line": 1448
2026-06-22T01:08:02.0062984Z             },
2026-06-22T01:08:02.0063069Z             {
2026-06-22T01:08:02.0063192Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T01:08:02.0063274Z               "line": 1605
2026-06-22T01:08:02.0063355Z             },
2026-06-22T01:08:02.0063440Z             {
2026-06-22T01:08:02.0063550Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:02.0063646Z               "line": 2588
2026-06-22T01:08:02.0063731Z             },
2026-06-22T01:08:02.0063820Z             {
2026-06-22T01:08:02.0063935Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T01:08:02.0064025Z               "line": 2655
2026-06-22T01:08:02.0064114Z             },
2026-06-22T01:08:02.0064199Z             {
2026-06-22T01:08:02.0064310Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T01:08:02.0064391Z               "line": 1002
2026-06-22T01:08:02.0064476Z             }
2026-06-22T01:08:02.0064557Z           ]
2026-06-22T01:08:02.0064748Z         }
2026-06-22T01:08:02.0064843Z       }
2026-06-22T01:08:02.0064920Z     },
2026-06-22T01:08:02.0065010Z     {
2026-06-22T01:08:02.0065110Z       "id": "REQ-WHOAMI-1",
2026-06-22T01:08:02.0066733Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-22T01:08:02.0066958Z       "requiredStages": [
2026-06-22T01:08:02.0067038Z         "doc",
2026-06-22T01:08:02.0067129Z         "impl",
2026-06-22T01:08:02.0067210Z         "unit"
2026-06-22T01:08:02.0067301Z       ],
2026-06-22T01:08:02.0067386Z       "stages": {
2026-06-22T01:08:02.0067478Z         "doc": {
2026-06-22T01:08:02.0067568Z           "complete": true,
2026-06-22T01:08:02.0067648Z           "evidence": [
2026-06-22T01:08:02.0067729Z             {
2026-06-22T01:08:02.0067816Z               "path": "CONTEXT.md",
2026-06-22T01:08:02.0067906Z               "line": 707
2026-06-22T01:08:02.0067986Z             }
2026-06-22T01:08:02.0068068Z           ]
2026-06-22T01:08:02.0068160Z         },
2026-06-22T01:08:02.0068240Z         "impl": {
2026-06-22T01:08:02.0068340Z           "complete": true,
2026-06-22T01:08:02.0068427Z           "evidence": [
2026-06-22T01:08:02.0068507Z             {
2026-06-22T01:08:02.0068616Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0068708Z               "line": 3190
2026-06-22T01:08:02.0068790Z             },
2026-06-22T01:08:02.0068873Z             {
2026-06-22T01:08:02.0069047Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0069132Z               "line": 3218
2026-06-22T01:08:02.0069221Z             }
2026-06-22T01:08:02.0069297Z           ]
2026-06-22T01:08:02.0069373Z         },
2026-06-22T01:08:02.0069470Z         "int": {
2026-06-22T01:08:02.0069569Z           "complete": false,
2026-06-22T01:08:02.0069659Z           "evidence": []
2026-06-22T01:08:02.0069746Z         },
2026-06-22T01:08:02.0069827Z         "unit": {
2026-06-22T01:08:02.0069922Z           "complete": true,
2026-06-22T01:08:02.0069999Z           "evidence": [
2026-06-22T01:08:02.0070080Z             {
2026-06-22T01:08:02.0070184Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0070279Z               "line": 7847
2026-06-22T01:08:02.0070352Z             },
2026-06-22T01:08:02.0070442Z             {
2026-06-22T01:08:02.0070541Z               "path": "crates/spt/src/cli.rs",
2026-06-22T01:08:02.0070623Z               "line": 7900
2026-06-22T01:08:02.0070714Z             }
2026-06-22T01:08:02.0070790Z           ]
2026-06-22T01:08:02.0070871Z         }
2026-06-22T01:08:02.0070957Z       }
2026-06-22T01:08:02.0071048Z     }
2026-06-22T01:08:02.0071128Z   ],
2026-06-22T01:08:02.0071214Z   "findings": []
2026-06-22T01:08:02.0071296Z }
